Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [C] Dubbi sul ciclo While

    Ciao a tutti. Vi riporto questo pezzo di codice:

    codice:
    case 5:
                     { //case 5 start
                          /*UNA SERIE DI PRINTF */
                          
                          int p;
                          scanf("%d", &p);
                          
                          printf("Adesso, specifica da dove partiremo per l'elaborazione della tabellina \n\n");
                          printf(" es. Mantenendo l'esempio di prima, la tabellina partendo da 2x1, ora insereisci 1\n\n");
                          
                          int q;
                          scanf("%d", &q);
                          
                          printf(" Benissimo, quindi adesso inserisci il termine della tabellina \n\n");
                          
                          int r;
                          scanf("%d", &r);
                          
                          printf(" ELABORAZIONE TABELLINA IN CORSO.....\n\n\n\n\n");
                          
                             if(r>q)
                                { //if start
                                
                                   while(q != 0)
                                     { //while start
                                     
                                     printf(" %d", q);
                                     printf(" x  %d", r);
                                     int s= q*r; 
                                     printf(" = %d \n\n" s);
                                     
                                     r++;
                                     } //terminare while
                                     
                                     } //end if
                                     } //end case
    Dunque, questo è una parte di codice di un programma che sto scrivendo.

    Come avrete sicuramente intuito, ha lo scopo di calcolare una tabellina, mediante l'input dell'utente di 3 numeri.

    Se ad esempio, voglio far calcolare la tabellina del 2 da 1 a 10, inserisco questi 3 numeri, quindi è sufficente dare un ENTER per confermare e ottenere l'elaborazione.

    Il problema è che mi fallisce il ciclo while, in quanto non è ben strutturato, almeno secondo Dev-C++.

    Potete aiutarmi per favore?

    grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    337
    printf(" = %d \n\n", s);

    manca una virgola nella printf, per il resto no nso dirti

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La condizione per cui il while deve essere ripetuto e'

    q != 0

    Hai pensato quando l'elaborazione uscira' dal ciclo ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    ciao, allora, ho risolto il problema, linko il codice corretto:

    codice:
      case 5:
                     { //case 5 start
                          printf(" CALCOLO DI UNA TABELLINA \n\n");
                          printf(" Per poter calcolare una tabellina, è necessario specificare una serie di valori");
                          printf(" che consentiranno di calcolore una tabellina. \n");
                          printf(" Si rende necessario, quindi, inserire 3 valori\n\n");
                          printf(" Inserisci il primo valore, ossia il primo numero della tabellina\n\n");
                          printf(" es. Per calcolare la tabellina partendo da 2x1, ora digita 2\n");
                          
                          int p;
                          scanf("%d", &p);
                          
                          printf("Adesso, specifica da dove partiremo per l'elaborazione della tabellina \n\n");
                          printf(" es. Mantenendo l'esempio di prima, la tabellina partendo da 2x1, ora insereisci 1\n\n");
                          
                          int q;
                          scanf("%d", &q);
                          
                          printf(" Benissimo, quindi adesso inserisci il termine della tabellina \n\n");
                          
                          int r;
                          scanf("%d", &r);
                          
                          printf(" ELABORAZIONE TABELLINA IN CORSO.....\n\n\n\n\n");
                          
                             if(r>q)
                                { //if start
                                
                                   while(q <= r)
                                     { //while start
                                     
                                     printf(" %d", q);
                                     printf(" x  %d", r);
                                     int s= p*q; 
                                     printf(" = %d \n\n", s);
                                     
                                     q++;
                                     
                                     } //terminare while
                                     
                                     } //end if
                                     break;
                                     } //end case
    Non si sa mai, possa essere utile a qualcuno.

    Ora, un altra curiosità.

    C'è un modo, pre far comparire la scritta:

    "Vuoi fare altre operazioni? S se si N se no\n\n");

    e se premi s ricomincia tutto dall'inizio, se premi n chiude il programma???

    ciao e grazie mille

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ovviamente sì ... mettilo alla fine del tuo programma e controlla l'esecuzione di TUTTO il codice inserendolo all'interno di un while controllato dalla risposta che dai ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    puoi spiegarti meglio per favore???

    grazie mille

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Inserisci tutto il tuo codice all'interno di un ciclo.

    Prima di ripetere il ciclo controlla che l'utente abbia risposto S alla tua domanda; altrimenti esci dal ciclo e quindi dal tuo programma ...

    Non c'e' altro modo di spiegarlo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    ciao, questo l'ho capito, il problema è tradurlo in codice.

    una cosa del tipo

    while ...

    {

    espressione

    }

    ora, dovrei mettere sotto un if con una variabile char, associata all'input dell'utente.

    ma come l'ho imposto???

    Il problema è il codice non la teoria... scusatemi ma sono ancora agli inizi....

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da ice-on-fire
    ciao, questo l'ho capito, il problema è tradurlo in codice.
    Allora non chiederlo di rispiegarlo ma di avere del codice d'esempio ...

    Se questo e' il tuo main ...

    codice:
    int main()
    {
       char risp;
    
       do
       {
           /* tutto il tuo programma */
    
          printf("Eseguire ancora il programma ? ");
          scanf("%c", &risp);
          while(!getchar()); /* svuota il buffer di tastiera */
       } while(risp=='S' || risp=='s');
    
       return 0;  /* fine programma */
    }
    questo puo' essere uno spunto ...

    ma come l'ho imposto???
    Non prendertela, ma curiamo l'italiano oltre al linguaggio C ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.