Problema if e operatori relazionali

di Anonimizzato13313 il
23 risposte
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

  • In nessun linguaggio di programmazione si scrive

    if (a > b > c)
  • 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
  • oregon ha scritto:


    In nessun linguaggio di programmazione si scrive

    if (a > b > c)
    ok,come potrei risolvere io problema?
  • 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)
  • Siccome puoi testare solo a coppie, prima testi la coppia a,b e ne ottieni il maggiore, poi testi questo con c.
  • 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.
  • 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...
  • E allora rimanda a quando li studierai sul libro.
  • oregon ha scritto:


    E allora rimanda ...
    però mi sembra strano...quindi conoscendo solo l'if non c'è soluzione?
  • Certo, ma ci provi a farlo da solo?

    Considera che puoi scrivere

    if(a>b)

    e

    if(b>c)
  • 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..
  • 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;
    }
  • 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?
  • 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