Problema if e operatori relazionali

di il
23 risposte

Problema if e operatori relazionali

Ho ricominciato lo studio dall'inizio per riempire le lacune ed eccallà
scritto questo codice non riesco a capire il motivo per cui mi sballa il risultato delle condizioni if
int main()
{
  
  int  a , b , c;
  int somma , prodotto , media;
  
  printf("Inserisci tre numeri: ");
  scanf("%d%d%d" , &a , &b , &c);
  
  somma = a + b + c;
  printf("La somma tra %d, %d e %d equivale a %d\n" , a , b , c , somma);
  
  media = (a + b + c) / 3;
  printf("La media tra %d, %d e %d equivale a %d\n" ,a , b , c , media);
  
  prodotto = a * b * c;
  printf("Il prodotto tra %d, %d e %d equivale a %d\n" , a , b , c , prodotto);
  
  if(a > b > c){
       printf("Il maggiore tra i tre numeri: %d\n" , a);
       }
  
  if(a < b > c){
       printf("Il maggiore tra i tre numeri: %d\n" , b);
       }
       
  if(a < b < c){
       printf("Il maggiore tra i tre numeri: %d\n" , c);
       }

23 Risposte

  • Re: Problema if e operatori relazionali

    In nessun linguaggio di programmazione si scrive

    if (a > b > c)
  • Re: Problema if e operatori relazionali

    Se fai un confronto ottieni un risultato, (a > b) sarà 1 se a è maggiore di b o 0 altrimenti; se fai (a > b) > c avrai due casi
    1 > c
    o
    0 > c
  • Re: Problema if e operatori relazionali

    oregon ha scritto:


    In nessun linguaggio di programmazione si scrive

    if (a > b > c)
    ok,come potrei risolvere io problema?
  • Re: Problema if e operatori relazionali

    candaluar ha scritto:


    se fai un confronto ottieni un risultato, (a > b) sarà 1 se a è maggiore di b o 0 altrimenti; se fai (a > b) > c avrai due casi
    1 > c
    o
    0 > c
    quindi devo scriverlo così?

    if ( (a < b) >c)
  • Re: Problema if e operatori relazionali

    Siccome puoi testare solo a coppie, prima testi la coppia a,b e ne ottieni il maggiore, poi testi questo con c.
  • Re: Problema if e operatori relazionali

    Senza prendertela ma una if è uno dei costrutti più semplici di ogni linguaggio (compreso del C).

    Se non pensi di studiare da solo neanche questo, non credo riuscirai mai ad affrontare un seppur semplice problema di programmazione. A questo punto, sarebbe solo una perdita di tempo.

    Scomponi in due confronti quel confronto multiplo e legalo con un opportuno operatore logico (che trovi sempre su un libro).

    Ti consiglio di provare a risolvere da solo questo piccolo problema, senza supporti esterni.
  • Re: Problema if e operatori relazionali

    oregon ha scritto:


    Senza prendertela ma una if è uno dei costrutti più semplici di ogni linguaggio (compreso del C).

    Se non pensi di studiare da solo neanche questo, non credo riuscirai mai ad affrontare un seppur semplice problema di programmazione. A questo punto, sarebbe solo una perdita di tempo.

    Scomponi in due confronti quel confronto multiplo e legalo con un opportuno operatore logico (che trovi sempre su un libro).

    Ti consiglio di provare a risolvere da solo questo piccolo problema, senza supporti esterni.
    sul libro che sto usando ancora non sono stati affrontati gli operatori logici...
  • Re: Problema if e operatori relazionali

    E allora rimanda a quando li studierai sul libro.
  • Re: Problema if e operatori relazionali

    oregon ha scritto:


    E allora rimanda ...
    però mi sembra strano...quindi conoscendo solo l'if non c'è soluzione?
  • Re: Problema if e operatori relazionali

    Certo, ma ci provi a farlo da solo?

    Considera che puoi scrivere

    if(a>b)

    e

    if(b>c)
  • Re: Problema if e operatori relazionali

    oregon ha scritto:


    Certo, ma ci provi a farlo da solo?

    Considera che puoi scrivere

    if(a>b)

    e

    if(b>c)
    non avevo letto da nessuna parte che si poteva scrivere

    if(a > b) if(b > c){ ecc ecc..
  • Re: Problema if e operatori relazionali

    fravol82 ha scritto:


    oregon ha scritto:


    Certo, ma ci provi a farlo da solo?

    Considera che puoi scrivere

    if(a>b)

    e

    if(b>c)
    non avevo letto da nessuna parte che si poteva scrivere

    if(a > b) if(b > c){ ecc ecc..
    bho,nemmeno così sembra andare bene...
    int main()
    {
      
      int  a , b , c;
      int somma , prodotto , media;
      
      printf("Inserisci tre numeri: ");
      scanf("%d%d%d" , &a , &b , &c);
      
      somma = a + b + c;
      printf("La somma tra %d, %d e %d equivale a %d\n" , a , b , c , somma);
      
      media = (a + b + c) / 3;
      printf("La media tra %d, %d e %d equivale a %d\n" ,a , b , c , media);
      
      prodotto = a * b * c;
      printf("Il prodotto tra %d, %d e %d equivale a %d\n" , a , b , c , prodotto);
      
      if(a > b) if(b > c){
           printf("Il maggiore tra i tre numeri: %d\n" , a);
           }
      
      if(a < b) 
      if(b > c){
           printf("Il maggiore tra i tre numeri: %d\n" , b);
           }
           
      if(a < b) 
      if(b < c){
           printf("Il maggiore tra i tre numeri: %d\n" , c);
           }
           
      if(a < b) 
      if(b < c){
           printf("Il minore tra i tre numeri: %d\n" , a);
           }
           
      if(a > b) 
      if(b < c){
           printf("Il minore tra i tre numeri: %d\n" , b);
           }
           
      if(a > b) 
      if(b > c){
           printf("Il minore tra i tre numeri: %d\n\n" , c);
           }
      
      system("PAUSE");	
      return 0;
    }
  • Re: Problema if e operatori relazionali

    Scrivere

    if(a > b) if(b > c){

    è come scrivere

    if(a > b)
    if(b > c){

    ovvero ....

    "se a è > b allora se b è > c"

    che equivale a dire

    "se a è > b e anche b è > c"

    quindi a è il maggiore.

    Per il resto, cosa non va? Hai pensato bene al metodo con cui vuoi arrivare alla soluzione complessiva del problema?
  • Re: Problema if e operatori relazionali

    oregon ha scritto:


    Scrivere

    if(a > b) if(b > c){

    è come scrivere

    if(a > b)
    if(b > c){

    ovvero ....

    "se a è > b allora se b è > c"

    che equivale a dire

    "se a è > b e anche b è > c"

    quindi a è il maggiore.

    Per il resto, cosa non va? Hai pensato bene al metodo con cui vuoi arrivare alla soluzione complessivo del problema?
    questo è un esercizio del primo capitolo del libro, if..else fa parte del successivo
    così com'è se inserisco 13 27 14,come richiesto dall'esercizio,il programma si ferma al maggiore e lo individua cofrrettamente,il minore non lo visualizza....se cambio la sequenza di input in 13 14 27 la visualizzazione è corretta
Devi accedere o registrarti per scrivere nel forum
23 risposte