Ho fatto giusto questo esercizio?

di il
17 risposte

Ho fatto giusto questo esercizio?

Salve! ho provato a fare questo esercizio solo che quando lo immetto su dev c++ , mi va avanti in continuazione sulla parte "inserisci 3 numeri positivi" cosa sbaglio?

l'esercizio mi dice

scrivere un programma c che legge da standard input tre numeri interi a , b , c che devono essere positivi. I numeri devono essere ordinati stampare a video la distanza tra a e b , a e c , b e c

#include <stdio.h>
#include <stdlib.h>

int main(){
    int a , b ,c ;
    
    while ( a > 0 && b > 0 && c > 0) {
          printf ("inserisci 3 numeri positivi :");
          scanf ("%d %d %d" , &a, &b , &c); 
          }
          int d;
          
          if (a>b){
                   d=a;
                   a=b;
                   b=d;
                   }
                   if (a>c){
                            d=a;
                            a=c;
                            c=d;}
                            if(b>c) {
                                    d=b;
                                    b=c;
                                    c-d;}
                                    
                                    printf("a:%d , b:%d , c:%d " , a, b, c);
                                    
                                    printf("la distanza tra a e b è: %d " , a - b);
                                    printf("la distanza tra a e c è : %d" , a - c);
                                    printf("la distanza tra b e c è : %d" , b - c);
                                    
                                    system ("pause");
                                    return 0;
                                    }
          
un altro dubbio se invece delle operazioni di sostinutione per ordinare i numeri , ponessi massimo e minimo tra i 3 numeri , funzionaerebbe epr orfinarli? ci stavo pensando giusto prima grazie !

17 Risposte

  • Re: Ho fatto giusto questo esercizio?

    È sbagliata la condizione nel while
  • Re: Ho fatto giusto questo esercizio?

    oregon ha scritto:


    È sbagliata la condizione nel while
    Al posto di && dovrei mettere || (or)? é l unica cosa che mi viene in mente ...
  • Re: Ho fatto giusto questo esercizio?

    Primo: il while opera fintantoché la condizione al suo interno è VERA. Il che significa che continuerà ad eseguire le stesse operazioni finché a > 0, b > 0, c > 0, e smetterà quando una di queste condizioni viene a mancare. Sicuro che sia proprio questo ciò che vuoi fare?
    Secondo: dato che confronti le variabili a, b e c nel while, inizializzale prima.
    Terzo: usa i tag
     e preferibilmente la corretta indentazione quando posti codice sul forum.
    
     f28
  • Re: Ho fatto giusto questo esercizio?

    While traducila come finche è vera fai.... Quindi tu gli dici finche le tre variabili sono maggiori di zero chiedimi di inserire le tre variabili
  • Re: Ho fatto giusto questo esercizio?

    tuixte ha scritto:


    Primo: il while opera fintantoché la condizione al suo interno è VERA. Il che significa che continuerà ad eseguire le stesse operazioni finché a > 0, b > 0, c > 0, e smetterà quando una di queste condizioni viene a mancare. Sicuro che sia proprio questo ciò che vuoi fare?
    Secondo: dato che confronti le variabili a, b e c nel while, inizializzale prima.
    Terzo: usa i tag
     e preferibilmente la corretta indentazione quando posti codice sul forum.
    
     f28[/quote]
    
    allora devo porre i tre valori < 0 così inserisco per entrambi i valori il numero e si arresta li perchè metto numeri maggiori di 0
  • Re: Ho fatto giusto questo esercizio?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int a , b ,c ;
        a=0;
        b=0;
        c=0
      while ( a < 0 && b < 0 && c < 0) {
              printf ("inserisci 3 numeri positivi :");
              scanf ("%d %d %d" , &a, &b , &c); 
              }
              int d;
              
              if (a>b){
                       d=a;
                       a=b;
                       b=d;
                       }
                       if (a>c){
                                d=a;
                                a=c;
                                c=d;}
                                if(b>c) {
                                        d=b;
                                        b=c;
                                        c-d;}
                                        
                                        printf("a:%d , b:%d , c:%d " , a, b, c);
                                        
                                        printf("la distanza tra a e b è: %d " , a - b);
                                        printf("la distanza tra a e c è : %d" , a - c);
                                        printf("la distanza tra b e c è : %d" , b - c);
                                        
                                        system ("pause");
                                        return 0;
                                        }
    
    ho inizalizzato i tre valori ponendoli a zero e modificato il valore nel while , un informazione per ordinare i 3 valori posso usare max e min e in tal modo ordinare i 3 numeri? più che altro stavo pensando ad un altro modo per svolgere quella parte di esercizio!grazie mille per l'aiuto
  • Re: Ho fatto giusto questo esercizio?

    Però ora devi usare ' || ' nel while
  • Re: Ho fatto giusto questo esercizio?

    Lore_valgi ha scritto:


    Però ora devi usare ' || ' nel while

    Così dico se a o b o c sono minori di 0 continuo , se uso && pero' dico se i tre valori sono tutti minori di 0 continuo , non é giusto comunque? (Ho questo dubbio)
  • Re: Ho fatto giusto questo esercizio?

    While(a<0 || b<0 || c<0) dici che finche la condizione è vera chiedi di inserire i dati!
    e la condizione è vera quando o a o b o c sono minori di zero! Quindi ipotiziamo a=2 b=3 c=-1 essendo c minore di zero lui ti richiede di inserire i tre valori! || è come dire "oppure" quindi basta una delle condizioni e e tutta la condizione diventa vera e lui ti richiede.
    while(a<0 && b<0 && c<0) cosi invece dici che la condizione è vera solo se a e b e c sono minori di zero e solo in questo caso puoi rinserire i tre dati! es: a=-2 b=-4 c=3 essendo c positivo non si verifica la condizione e quindi lui esce dal ciclo while e va avanti con il programma!
    || vero + falso = vero
    && vero + falso = falso
  • Re: Ho fatto giusto questo esercizio?

    Domanda probabilmente stupida quando faccio compila e esegui , mi esce questo , non so come mai , mi appare così appena faccio esegui!
    Allegati:
    16051_7cfdcf7a7e4b266298de8601944e9fe1.jpg
    16051_7cfdcf7a7e4b266298de8601944e9fe1.jpg
  • Re: Ho fatto giusto questo esercizio?

    Inserisci degli a capo utilizzando il carattere \n e utilizza e' con l'apostrofo al posto di è con l'accento.
  • Re: Ho fatto giusto questo esercizio?

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
        int a , b ,c ;
        a=0;
        b=0;
        c=0;
        while ( a < 0 || b < 0 || c < 0) {
              printf ("inserisci 3 numeri positivi :");
              scanf ("%d %d %d" , &a, &b , &c); 
              }
              int d;
              
              if (a>b){
                       d=a;
                       a=b;
                       b=d;
                       }
                       if (a>c){
                                d=a;
                                a=c;
                                c=d;}
                                if(b>c) {
                                        d=b;
                                        b=c;
                                        c=d;}
                                        
                                        printf("a:%d , b:%d , c:%d " , a, b, c);
                                        
                                        printf("la distanza tra a e b e'\n: %d " , a - b);
                                        printf("la distanza tra a e c e'\n : %d" , a - c);
                                        printf("la distanza tra b e c e'\n: %d" , b - c);
                                        
                                        system ("pause");
                                        return 0;
                                        }
    ho fatto così ma la solfa grosso non cambia
  • Re: Ho fatto giusto questo esercizio?

    La condizione all'inizio del ciclo deve essere vera, quindi non devi azzerare le variabili ma scrivere, ad esempio

    a=b=c=-1;
  • Re: Ho fatto giusto questo esercizio?

    Non capisco insisti col ciclo while visto che ti chiede di inserire 3 numeri l' esercizio.
    Quel carattere strano che vedi in consolle è una 'è'.
    Nel vecchio codice ASCII non esiste quel carattere quindi devi usare la e con '
    Come già ti hanno detto.

    Cmq per il while, hai pensato ad un flag?.
    ti crei una variabile intera e la usi come flag. Il flag è una variabile bandiera.
    
    
    while (flag!=1) \\se flag è diverso da 1 continuo il ciclo
    {
          istruzioni;
          .....
          
          .....
    
          Printf("Vuoi continuare?);
          scanf("%d",&flag);
    }
    
    potresti sperimentare la condizione con la negazione logica ! come istruzione while.
Devi accedere o registrarti per scrivere nel forum
17 risposte