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

    [C] - problema con ciclo while controllato da sentinella

    ragazzi vi segnalo in rosso il while che non riesco a far iterare, praticamente l'esecuzione del programma si ferma come in attesa di un comando, ecco il codice:

    codice:
    #include <stdio.h>
    
    int main()
    {
    
        float cipolle = 0, aglio = 0, insalata = 0, carote = 0, banane = 0;
        int control;
        float quantita;
        int settimana = 1;
        int venduti = 0;
        
        do {
        printf("1 - cipolle 2.98€\n"
               "2 - aglio 4.50€\n"
               "3 - insalata 9.98€\n"
               "4 - carote 4.49€\n"
               "5 - banane 6.87€\n");
        printf("\nper chiusura giornata lavorativa digitare -1\n");
        printf("\nscegliere il prodotto desiderato = ");
        scanf("%d", &control);
        
        printf("inserire quantità venduta in Kg = ");
        scanf("%d", &quantita);
        
       while(control != -1){
        switch(control){
                        case 1 : cipolle += (2.98 * quantita); break;
                        case 2 : aglio += (4.50 * quantita); break;
                        case 3 : insalata += (9.98 * quantita); break;
                        case 4 : carote += (4.49 * quantita); break;
                        case 5 : banane += (6.87 * quantita); break;
                        }/*fine while giornata lavorativa */
                        }/*fine switch*/
        settimana++;
        printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
        }while(settimana <= 7);/*fine while */
        
        venduti = cipolle + aglio + insalata + carote + banane;
        
        printf("questa settimana sono stati venduti %.2f\n", venduti);
        
        system("pause");
        return 0;
    }
    è proprio il comando SWITCH che non può essere iterato in quel modo?

    N.B. non ridete per le variabili che ho usato

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Ma control quando lo fai diventare = -1??

  3. #3
    Originariamente inviato da Joe Taras
    Ma control quando lo fai diventare = -1??
    quando scelgo il prodotto!!!

  4. #4
    ciò che non avviene e che vorrei riuscire a fare, è iterare lo switch fin quando non immetto -1, cioè control = -1.

  5. #5
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Prova a fare un trace manuale.

    Tu inserisci il valore 1.

    Entri nel WHILE ed hai sempre 1 e dal WHILE non esci fin quando il valore è -1, infatti tu dici che il programma si blocca... proprio per questo motivo, aggiungo io.

  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    while(control != -1){
    switch(control){
    case 1 : cipolle += (2.98 * quantita); break;
    case 2 : aglio += (4.50 * quantita); break;
    case 3 : insalata += (9.98 * quantita); break;
    case 4 : carote += (4.49 * quantita); break;
    case 5 : banane += (6.87 * quantita); break;
    }/*fine while giornata lavorativa */
    }/*fine switch*/
    settimana++;
    printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
    }while(settimana <= 7);/*fine while */

    deve diventare
    while(settimana <= 7){
    switch(control){
    case 1 : cipolle += (2.98 * quantita); break;
    case 2 : aglio += (4.50 * quantita); break;
    case 3 : insalata += (9.98 * quantita); break;
    case 4 : carote += (4.49 * quantita); break;
    case 5 : banane += (6.87 * quantita); break;
    }/*fine while giornata lavorativa */
    }/*fine switch*/
    settimana++;
    printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
    }
    }while(control != -1)

    perché questo while chiude il do di sopra (sarebbe come un until), mentre il while della settimana funge da vero while.

    Prova così

  7. #7
    Originariamente inviato da Joe Taras
    while(control != -1){
    switch(control){
    case 1 : cipolle += (2.98 * quantita); break;
    case 2 : aglio += (4.50 * quantita); break;
    case 3 : insalata += (9.98 * quantita); break;
    case 4 : carote += (4.49 * quantita); break;
    case 5 : banane += (6.87 * quantita); break;
    }/*fine while giornata lavorativa */
    }/*fine switch*/
    settimana++;
    printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
    }while(settimana <= 7);/*fine while */

    deve diventare
    while(settimana <= 7){
    switch(control){
    case 1 : cipolle += (2.98 * quantita); break;
    case 2 : aglio += (4.50 * quantita); break;
    case 3 : insalata += (9.98 * quantita); break;
    case 4 : carote += (4.49 * quantita); break;
    case 5 : banane += (6.87 * quantita); break;
    }/*fine while giornata lavorativa */
    }/*fine switch*/
    settimana++;
    printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
    }
    }while(control != -1)

    perché questo while chiude il do di sopra (sarebbe come un until), mentre il while della settimana funge da vero while.

    Prova così
    ma in questo modo non avrò più un calcolo dei giorni ma semplicemente lo switch mi si ripeterà per 7 volte...in pratica il programma deve tener conto degli acquisti giornalieri e chiudere la giornata alla fine degli acquisti di quel giorno per poi ricomnciare un altra giornata lavorativa, fino ad avere 7 giorni di vendite, per darmi il totale della settimana.

  8. #8
    codice:
    #include <stdio.h>
    
    int main()
    {
    
        float cipolle = 0, aglio = 0, insalata = 0, carote = 0, banane = 0;
        int control;
        float quantita;
        int settimana = 1;
        int venduti = 0;
        
        do {
        printf("1 - cipolle 2.98€\n"
               "2 - aglio 4.50€\n"
               "3 - insalata 9.98€\n"
               "4 - carote 4.49€\n"
               "5 - banane 6.87€\n");
        printf("\nper chiusura giornata lavorativa digitare -1\n");
        
    
     printf("\nscegliere il prodotto desiderato = ");
        scanf("%d", &control);
        
        printf("inserire quantità venduta in Kg = ");
        scanf("%d", &quantita);
        
       while(control != -1){
                     
        switch(control){
                        case 1 : cipolle += (2.98 * quantita); break;
                        case 2 : aglio += (4.50 * quantita); break;
                        case 3 : insalata += (9.98 * quantita); break;
                        case 4 : carote += (4.49 * quantita); break;
                        case 5 : banane += (6.87 * quantita); break;
                        }/*fine while giornata lavorativa */
           printf("\nscegliere il prodotto desiderato = ");
           scanf("%d", &control);
        
           printf("inserire quantità venduta in Kg = ");
           scanf("%d", &quantita);
                        }/*fine switch*/
        
        settimana++;
        printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n", settimana);
        
        }while(settimana <= 7);/*fine while */
        
        venduti = cipolle + aglio + insalata + carote + banane;
        
        printf("questa settimana sono stati venduti %.2f\n", venduti);
        
        system("pause");
        return 0;
    }
    ho risolto in questo modo il funzionamento...ora però devo aggiustare i la parte algebrica...praticamente alla fine mi risulta sempre zero il risultato

  9. #9
    Risolto tutto...non avevo dichiarato "venduti" come float...

    grazie Joe Taras

    Codice PHP:

    #include <stdio.h>

    int main()
    {

        
    float cipolle 0aglio 0insalata 0carote 0banane 0;
        
    int control;
        
    int quantita;
        
    int settimana 1;
        
    float venduti;
        
        do {
        
    printf("1 - cipolle 2.98$\n"
               "2 - aglio 4.50$\n"
               "3 - insalata 9.98$\n"
               "4 - carote 4.49$\n"
               "5 - banane 6.87$\n"
    );
        
    printf("\nper chiusura giornata lavorativa digitare -1\n");
        
    printf("\nscegliere il prodotto desiderato = ");
        
    scanf("%d", &control);
        
        
    printf("inserire quantità venduta in Kg = ");
        
    scanf("%d", &quantita);
        
       while(
    control != -1){
                     
        switch(
    control){
                        case 
    cipolle += (2.98 quantita); break;
                        case 
    aglio += (4.50 quantita); break;
                        case 
    insalata += (9.98 quantita); break;
                        case 
    carote += (4.49 quantita); break;
                        case 
    banane += (6.87 quantita); break;
                        }
    /*fine while giornata lavorativa */
           
    printf("\nscegliere il prodotto desiderato = ");
           
    scanf("%d", &control);
        
           
    printf("inserire quantità venduta in Kg = ");
           
    scanf("%d", &quantita);
                        }
    /*fine switch*/
        
    settimana++;
        
    printf("\n\n ***GIORNO %d DELLA SETTIMANA***\n\n"settimana);
        
        }while(
    settimana <= 7);/*fine while */
        
        
    venduti cipolle aglio insalata carote banane;
        
        
    printf("questa settimana sono stati guadagnati $ %.2f\n"venduti);
        
        
    system("pause");
        return 
    0;


  10. #10

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.