Dove inserire ciclo While

di Anonimizzato22121 il
10 risposte
Salve,
Vorrei sapere dove posso inserire un ciclo While in modo da poter ripetere la possibilità di selezionare le prime 3 opzioni anche dopo l'utilizzo, finchè non si seleziona la 4a (per uscire dal programma). Spero di esser stato chiaro.

#include<stdio.h>
#include<unistd.h>
int main()
{
	int selezMenu;
	float deltaS, deltaT, vMedia;
	printf("\n");
	printf("/----------\\\n");
	printf("|----- VELO ----------\\\n");
	printf("\\---------- CALC -----|\n");
	printf("          \\-----------/\n");
	printf("\n");
	printf("\n");
	printf("      Premi invio      \n");
	getchar();
	printf("\n");
	printf("-----------------------\n");
	printf("| [1] Velocità media  |\n");
	printf("| [2] Spazio percorso |\n");
	printf("| [3] Tempo impiegato |\n");
	printf("| [4] Esci            |\n");
	printf("-----------------------\n");
	printf(": ");
	scanf("%d", &selezMenu);
	if (selezMenu == 1){
		printf("\n");
		printf("Inserisci lo spazio percorso in Km:  ");
		scanf("%f", &deltaS);
		printf("Inserisci il tempo impiegato in ore:  ");
		scanf("%f", &deltaT);
		printf("La velocità media è di %0.2f Km/h\n", deltaS/deltaT);
	} else if (selezMenu == 2){
		printf("\n");
		printf("Inserisci la velocità media in Km/h:  ");
		scanf("%f", &vMedia);
		printf("Inserisci il tempo impiegato in ore:  ");
		scanf("%f", &deltaT);
		printf("Lo spazio percorso è di %0.2f Km\n", vMedia*deltaT);
	} else if (selezMenu == 3){
		printf("\n");
		printf("Inserisci lo spazio percorso in Km:  ");
		scanf("%f", &deltaS);
		printf("Inserisci la velocità media in Km/h:  ");
		scanf("%f", &vMedia);
		printf("Il tempo impiegato è di %0.2f ore\n", deltaS/vMedia);
	} else if (selezMenu == 4){
		printf("\n");
		printf("Grazie per aver utilizzato VeloCalc by Phreaker!\n");
	}
return 0;
}
Ringrazio tutti anticipatamente,
Phreaker

10 Risposte

  • Beh ... mi sembra ovvio che il ciclo deve iniziare prima della prima printf di presentazione del menu e terminare prima del return.
  • Grazie della risposta tempestiva, un ultima domanda, cosa devo inserire nel "campo" dell'espressione? Esempio:
    while(espressione)
      {
            ...
            ...
      }
    
    Phreaker
  • Pensaci un po' e fao qualche tentativo altrimenti come impari?
  • Adesso ho aggiunto " int c = 1; " e " while(c > 0) " ma nonostante ciò, se seleziono l'opzione 4 per uscire, torna al menù di selezione.
    
    #include<stdio.h>
    #include<unistd.h>
    int main()
    {
    	int selezMenu;
    	float deltaS, deltaT, vMedia;
    	int c = 1;
    	while(c > 0)
    	{
    		printf("\n");
    		printf("/----------\\\n");
    		printf("|----- VELO ----------\\\n");
    		printf("\\---------- CALC -----|\n");
    		printf("          \\-----------/\n");
    		printf("\n");
    		printf("\n");
    		printf("      Premi invio      \n");
    		getchar();\
    		printf("\n");
    		printf("-----------------------\n");
    		printf("| [1] Velocità media  |\n");
    		printf("| [2] Spazio percorso |\n");
    		printf("| [3] Tempo impiegato |\n");
    		printf("| [4] Esci            |\n");
    		printf("-----------------------\n");
    		printf(": ");
    		scanf("%d", &selezMenu);
    		if (selezMenu == 1){
    			printf("\n");
    			printf("Inserisci lo spazio percorso in Km:  ");
    			scanf("%f", &deltaS);
    			printf("Inserisci il tempo impiegato in ore:  ");
    			scanf("%f", &deltaT);
    			printf("La velocità media è di %0.2f Km/h\n", deltaS/deltaT);
    		} else if (selezMenu == 2){
    			printf("\n");
    			printf("Inserisci la velocità media in Km/h:  ");
    			scanf("%f", &vMedia);
    			printf("Inserisci il tempo impiegato in ore:  ");
    			scanf("%f", &deltaT);
    			printf("Lo spazio percorso è di %0.2f Km\n", vMedia*deltaT);
    		} else if (selezMenu == 3){
    			printf("\n");
    			printf("Inserisci lo spazio percorso in Km:  ");
    			scanf("%f", &deltaS);
    			printf("Inserisci la velocità media in Km/h:  ");
    			scanf("%f", &vMedia);
    			printf("Il tempo impiegato è di %0.2f ore\n", deltaS/vMedia);
    		} else if (selezMenu == 4){
    			printf("\n");
    			printf("Grazie per aver utilizzato VeloCalc by Phreaker!\n");
    		}
    	}
    return 0;
    }
    
    Phreaker
  • Ok. Sono riuscito a farlo funzionare, ho dovuto aggiungere un break;
    Grazie mille per l'aiuto, oregon.
    Phreaker
  • La variabile che hai introdotto non cambia mai, come fa a terminare il ciclo? Anche senza break...
  • Ti pasto il codice
    
    #include<stdio.h>
    #include<unistd.h>
    int main()
    {
    	int selezMenu, c = 1;
    	float deltaS, deltaT, vMedia;
    	printf("\n");
    	printf("/----------\\\n");
    	printf("|----- VELO ----------\\\n");
    	printf("\\---------- CALC -----|\n");
    	printf("          \\-----------/\n");
    	printf("\n");
    	printf("\n");
    	printf("      Premi invio      \n");
    	getchar();
    	while(c>0)
    	{
    		printf("\n");
    		printf("-----------------------\n");
    		printf("| [1] Velocità media  |\n");
    		printf("| [2] Spazio percorso |\n");
    		printf("| [3] Tempo impiegato |\n");
    		printf("| [4] Esci            |\n");
    		printf("-----------------------\n");
    		printf(": ");
    		scanf("%d", &selezMenu);
    		if (selezMenu == 1){
    			printf("\n");
    			printf("Inserisci lo spazio percorso in Km:  ");
    			scanf("%f", &deltaS);
    			printf("Inserisci il tempo impiegato in ore:  ");
    			scanf("%f", &deltaT);
    			printf("La velocità media è di %0.2f Km/h\n", deltaS/deltaT);
    		} else if (selezMenu == 2){
    			printf("\n");
    			printf("Inserisci la velocità media in Km/h:  ");
    			scanf("%f", &vMedia);
    			printf("Inserisci il tempo impiegato in ore:  ");
    			scanf("%f", &deltaT);
    			printf("Lo spazio percorso è di %0.2f Km\n", vMedia*deltaT);
    		} else if (selezMenu == 3){
    			printf("\n");
    			printf("Inserisci lo spazio percorso in Km:  ");
    			scanf("%f", &deltaS);
    			printf("Inserisci la velocità media in Km/h:  ");
    			scanf("%f", &vMedia);
    			printf("Il tempo impiegato è di %0.2f ore\n", deltaS/vMedia);
    		} else if (selezMenu == 4){
    			printf("\n");
    			printf("Grazie per aver utilizzato VeloCalc by Phreaker!\n");
    			break;
    	}	}
    return 0;
    }
    
    Phreaker
  • Ma il tuo "Anche senza break", era una domanda della serie "come fai a farlo senza break?" oppure mi stavi chiedendo come avevo fatto?
  • La domanda e' subdola .
    Mettila cosi':

    lo potresti fare SENZA break?

    in particolare

    COME FUNZIONA il while?
    e sopprattutto, PERCHE' il while FUNZIONA?

    Ragiona bene, non rispondere a casaccio
    Non e' difficile. Bisogna pero' studiare un po'.
  • Si, hai ragione. Ci penso per bene e poi aggiorno.
    Phreaker
Devi accedere o registrarti per scrivere nel forum
10 risposte