Progrmma con switch

di il
13 risposte

Progrmma con switch

Ciao non riesco a capire come fare il controllo rekativo di controllare solo una volta la stringa di panini o altro. E di stampare posizione
Grazie
Allegati:
Programma fatto
Programma fatto

Testo programma
Testo programma

13 Risposte

  • Re: Progrmma con switch

    Copia incolla il testo del codice non la foto
  • Re: Progrmma con switch

    #include <stdio.h>

    #include <stdlib.h>


    int main(){

    //dichiarazione delle variabili

    int scelta, panino=0, pizza=0, focaccia=0;


    //implememtazione dell'algoritmo

    do{

    do{

    printf("\nInserire la scelta:\n1.Panino\n2.Pizza\n3.Focaccia: ");

    scanf("%d",&scelta);

    if(scelta<0 || scelta>3)

    printf("\nInserimento errato!");

    }while(scelta<0 || scelta>3);



    switch (scelta){

    case 1:

    printf("\n Hai scelto il panino");

    panino++;



    break;

    case 2:

    printf("\n Hai scelto il pizza");

    pizza++;

    break;



    case 3:

    printf("\n Hai scelto il focaccia");

    focaccia++;

    break;

    default: ;

    }









    }while(scelta!=0);



    system("PAUSE");

    return 0;


    }
  • Re: Progrmma con switch

    Non così. Seleziona tutto il codice e clicca sul pulsante "</>". Poi spiegati meglio.
  • Re: Progrmma con switch

    
    #include <stdio.h>
    
    #include <stdlib.h>
    
    
    int main(){
    
    	//dichiarazione delle variabili
    
    	int scelta, panino=0, pizza=0, focaccia=0;
    
    
    	//implememtazione dell'algoritmo
    
    	do{
    
    		do{
    
    			printf("\nInserire la scelta:\n1.Panino\n2.Pizza\n3.Focaccia: ");
    
    			scanf("%d",&scelta);
    
    			if(scelta<0 || scelta>3)
    
    				printf("\nInserimento errato!");
    
    		}while(scelta<0 || scelta>3);
    
    	
    
    		switch (scelta){
    
    			case 1:
    
    				printf("\n Hai scelto il panino");
    
    				panino++;
    
    				
    
    				break;
    
    			case 2:
    
    				printf("\n Hai scelto il pizza");
    
    				pizza++;
    
    				break;
    
    				
    
    			case 3:
    
    				printf("\n Hai scelto il focaccia");
    
    				focaccia++;
    
    				break;
    
    			default: ;	
    
    		}
    
    		
    
    	}while(scelta!=0);
    
    
    
    	system("PAUSE");
    
    	return 0;
    
    
    }
    
    
    
    
  • Re: Progrmma con switch

    Io so quanti panini o pizze o focacce acquisto
    Devo stampare a video quale e la sequenza piu lunga inserita (se focacce pizze o panini) e in quale posizione si trova inizio sequenza.
    Non dovendolo fare con array mi trovo in difficoltà
  • Re: Progrmma con switch

    Puoi usare un enumeratore per i nomi di prodotti, per poi usare l'array, da cui cercherai il massimo.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef enum {panino, pizza, focaccia} Prodotto;
    int massimo(int v[], int lenght)
    {
        int max = 0;
        for(int i=1;i<lenght;i++)
            if(v[i]>v[i-1])
                max = i;
        return max;
    }
    int main(){
    
    	//dichiarazione delle variabili
    
    	int scelta;
    	int prodotti[] = {0,0,0};
    	Prodotto maggiore;
    
    
    	//implememtazione dell'algoritmo
    
    	do{
    
    		do{
    			printf("\nInserire la scelta:\n1.Panino\n2.Pizza\n3.Focaccia: ");
    			scanf("%d",&scelta);
    			if(scelta<0 || scelta>3)
    				printf("\nInserimento errato!");
    		}while(scelta<0 || scelta>3);
    
    		switch (scelta){
    
    			case 1:
    				printf("\n Hai scelto il panino");
    				prodotti[panino]++;
    				break;
    
    			case 2:
    				printf("\n Hai scelto il pizza");
    				prodotti[pizza]++;
    				break;
    			case 3:
    				printf("\n Hai scelto il focaccia");
    				prodotti[focaccia]++;
    				break;
    			default: ;	
    
    		}
    
    		
    
    	}while(scelta!=0);
    	
    	maggiore=massimo(prodotti, 3);
    	switch(maggiore){
    	    case pizza:
    	        printf("\npizza e' il piu' venduto");
    	        break;
    	    case panino:
    	        printf("\npanino e' il piu' venduto");
    	        break;
    	    case focaccia:
    	        printf("\nfocaccia e' il piu' venduto");
    	        break;
    	    default:
    	    break;
    	}
    
    	system("PAUSE");
    	return 0;
    }
    
    Con gli enumeratori, il compilatore sostituirà dei numeri interi al posto delle etichette (non sono variabili!) "panino", "pizza" e "focaccia", che userai come indici dell'array.

    Oppure puoi farti un array di struct definite in questo modo:
    
    typedef struct _Prodotto{
    char nome[20];
    int quantita;
    } Prodotto;
    
    In cui alla fine cercherai quello con "quantita" maggiore e ne stamperai il nome.
  • Re: Progrmma con switch

    Ok, ci sarebbe un alternativa senza array. Perché il professore non vuole che li usiamo

    Grazie e scusami
  • Re: Progrmma con switch

    È il massimo fra 3 numeri, bastano un paio di if-else nidificati. Ne confronti due e il vincitore si confronta con terzo. Non posso scriverti la soluzione
  • Re: Progrmma con switch

    Quel codice non soddisfa le richieste dell'esercizio che cerca la massima sequenza e la sua posizione.
  • Re: Progrmma con switch

    Caspita avevo letto male anche io! Allora non serve portare il conto per ogni prodotto. Puoi usare tre variabili per la sequenza corrente (contatore, numero prodotto e posizione di inizio) e altre tre dove tieni salvata la sequenza più lunga. Ovviamente un contatore totale dei prodotti venduti.
  • Re: Progrmma con switch

    
    
    #include <stdio.h>
    #include <stdlib.h>
    int main(){
    
    int scelta, panino=0, pizza=0,pos=0,posp=0,posz=0,posf=0,focaccia=0,voltez=0,voltef=0,voltep=0;
        do{
    do{
        printf("\n Inserisci la scelta: \n 1.panino \n 2.pizza \n 3.focaccia :");
        scanf("%d",&scelta);
        if (scelta<0 || scelta >3)
        printf("\n inserimento errato!");
    
    
          }while (scelta<0 || scelta>3);
         
          pos++;
          switch (scelta){
         
          case 1: printf("\n hai scelto il panino ");
         
          if (posp==0) {
          posp=pos;
         
          }
         
          if (voltep>0) {
      panino=0;
     
     
     
         
          }
          if (posz>0) {
      voltez=1;
     
     
     
         
          }
          if (posf>0) {
      voltef=1;
     
     
     
         
          }
          panino++;
          break;
         
          case 2: printf("\n hai scelto il pizza");
         
          if (posz==0) {
          posz=pos;
          }
          if (voltez>0) {
      pizza=0;
     
     
     
         
          }
          if (posp>0) {
      voltep=1;
     
     
     
         
          }
          if (posf>0) {
      voltef=1;
     
     
     
         
          }
          pizza++;
          break;
         
          case 3: printf("\n hai scelto il focaccia");
         
          focaccia++;
    
         
          if (posf==0 ){
          posf=pos;
          }
          if (voltef>0) {
      focaccia=0;
     
     
     
         
          }
          if (posp>0) {
      voltep=1;
     
     
     
         
          }
          if (posz>0) {
      voltez=1;
     
     
     
         
          }
         
          break;
         
          default: ;
    }
    
    
    }while (scelta !=0);
    
    
    
    if (pizza>panino && pizza>focaccia){
    printf("%d",pizza);
    printf("pizze");
    printf(" con inizio al " );
    printf("%d",posz);
    printf("acquisto");
    
    
    
    
    }
    else if (panino>pizza && panino>focaccia){
    printf("%d",panino);
    printf("panini ");
    printf(" con inizio al " );
    printf("%d",posp);
    printf(" acquisto");
    
    
    
    
    }
    else if (focaccia>panino && focaccia>pizza){
    printf("%d",focaccia);
    printf("focacce");
    printf(" con inizio al " );
    printf("%d",posf);
    printf(" acquisto");
    }
    system ("PAUSE");
    return 0;
    }
    
    
    
    
    


    Grazie mille risucita
  • Re: Progrmma con switch

    Un consiglio, va bene se vuoi abbreviare, ma cerca di dare nomi un po' più esplicativi alle variabili, altrimenti quando leggerai il codice tra una settimana, non ci capirai niente nemmeno tu.
    Comunque, come ho detto, non serviva portare il conto per ogni prodotto (a meno che non lo chieda la traccia, ma non mi sembra) e si poteva fare un po' più semplice.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(){
    
    	//dichiarazione delle variabili
    
    	int scelta;
    	int tot_acquisti = 0;
    	int lung_seq_corrente = 1, prodotto_seq_corrente = 0, pos_seq_corrente = 1;
    	int lung_seq_max = 0, prodotto_seq_max = 0, pos_seq_max = 0;
    
    	//implememtazione dell'algoritmo
    
    	do{
    		do{
    			printf("\nInserire la scelta:\n1.Panino\n2.Pizza\n3.Focaccia: ");
    			scanf("%d",&scelta);
    			if(scelta<0 || scelta>3)
    				printf("\nInserimento errato!");
    		}
    		while(scelta<0 || scelta>3);
    		switch (scelta){
    
    			case 1:
    				printf("\n Hai scelto il panino\n");
    				break;
    				
    			case 2:
    				printf("\n Hai scelto la pizza\n");
    				break;
    				
    			case 3:
    				printf("\n Hai scelto la focaccia\n");
    				break;
    			default: ;	
    		}
    		
    		tot_acquisti++;
    		if(scelta != prodotto_seq_corrente)
    		{
    		    if(lung_seq_corrente >= lung_seq_max)
    		    {
    		        lung_seq_max = lung_seq_corrente;
    		        prodotto_seq_max = prodotto_seq_corrente;
    		        pos_seq_max = pos_seq_corrente;
    		    }
    		    
    		    lung_seq_corrente = 0;
    		    prodotto_seq_corrente = scelta;
    		    pos_seq_corrente = tot_acquisti;
    		}
    		lung_seq_corrente++;
    	}
    	while(scelta!=0);
    	
    	switch(prodotto_seq_max){
    	    case 1:
    	        printf("\n%d panini, con inizio al %d^ acquisto", lung_seq_max, pos_seq_max);
    	        break;
    	    case 2:
    	        printf("\n%d pizze, con inizio al %d^ acquisto", lung_seq_max, pos_seq_max);
    	        break;
    	    case 3:
    	        printf("\n%d focacce, con inizio al %d^ acquisto", lung_seq_max, pos_seq_max);
    	        break;
    	    default:
    	        printf("\nNessun acquisto effettuato");
    	    break;
    	}
    
    	system("PAUSE");
    	return 0;
    }
    
  • Re: Progrmma con switch

    Ok grazie
    Ciao
Devi accedere o registrarti per scrivere nel forum
13 risposte