Problema con programma C

di il
4 risposte

Problema con programma C

Qualcuno mi aiuta con un problemino in C? é urgentissimo...

4 Risposte

  • Re: Problema con programma C

    Ciao prova a spiegare il problema...
  • Re: Problema con programma C

    #include<stdlib.h>
    #include<stdio.h>
    #include<iostream>
    #include<ctime>
    #define num_pacchi 20
    using namespace std;
    
    
    int Gioca(char nome[], int pacco);       
    int offerta(char nome[], int pacco);                   
    int Apertura_Pacco();                             
    int Fine();                            
    
    
    char nome[20];
    int pacco,fare_offerta= 0;
                        
    int pacchi_rimanenti[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
    
    struct pa
    { 
      int tipo;
      int contenuto_pacco;                 //{Pacchi}
      char *premio;
    }p[num_pacchi];
    
    
    int cambio_finito=0;
    int main () {
        
        system("color 34");
        srand(time(NULL));
        int scelta;
    p[0].tipo=2;
    p[0].contenuto_pacco=-1;
    p[0].premio="aaaaaa";
    p[1].tipo=2;
    p[1].contenuto_pacco=-1;
    p[1].premio="bbbbb";
    p[2].tipo=2;
    p[2].contenuto_pacco=-1;
    p[2].premio="ccccc";
    p[3].tipo=2;
    p[3].contenuto_pacco=-1;
    p[3].premio="ddddd";
    p[4].tipo=2;
    p[4].contenuto_pacco=-1;
    p[4].premio="eeeee";
    p[5].tipo=1;
    p[5].contenuto_pacco=1;
    p[5].premio="1 euro";
    p[6].tipo=1;
    p[6].contenuto_pacco=5;
    p[6].premio="5 euro";
    p[7].tipo=1;
    p[7].contenuto_pacco=10;
    p[7].premio="10 euro";
    p[8].tipo=1;
    p[8].contenuto_pacco=20;
    p[8].premio="20 euro";
    p[9].tipo=1;
    p[9].contenuto_pacco=100;
    p[9].premio="100 euro";
    p[10].tipo=1;
    p[10].contenuto_pacco=500;
    p[10].premio="500 euro";
    p[11].tipo=1;
    p[11].contenuto_pacco=1000;
    p[11].premio="1000 euro";
    p[12].tipo=1;
    p[12].contenuto_pacco=5000;
    p[12].premio="5000 euro";
    p[13].tipo=1;
    p[13].contenuto_pacco=10000;
    p[13].premio="10000 euro";
    p[14].tipo=1;
    p[14].contenuto_pacco=20000;
    p[14].premio="20000 euro";
    p[15].tipo=1;
    p[15].contenuto_pacco=50000;
    p[15].premio="50000 euro";
    p[16].tipo=1;
    p[16].contenuto_pacco=75000;
    p[16].premio="75000 euro";
    p[17].tipo=1;
    p[17].contenuto_pacco=100000;
    p[17].premio="100000 euro";
    p[18].tipo=1;
    p[18].contenuto_pacco=250000;
    p[18].premio="250000 euro";
    p[19].tipo=1;
    p[19].contenuto_pacco=500000;
    p[19].premio="500000 euro";
    
         printf("\t\t****************************************************\n");
       printf("\t\t*                                                  *\n");  
       printf("\t\t*            Benvenuti ad AFFARI TUOI              *\n");
       printf("\t\t*                                                  *\n"); 
       printf("\t\t****************************************************\n\n"); 
        printf( "1 - Gioca\n\n2 - Esci\n\n");
        scanf("%d",&scelta);
        do {
        switch (scelta) {
               case 1:
                    system("cls");
                    printf( "\n\nInserisci il tuo nome: ");
                    scanf("%s",&nome);
                    while (pacco < 1 || pacco > 20)
                    {
                    printf( "\n\nInserisci il numero del pacco che vuoi(1-20): ");
                    scanf("%d",&pacco);
                    }
                    Gioca(nome,pacco);
                    
                    break;
               case 2:
                    exit (1);
                    }
               }
               while (scelta < 1 || scelta > 3);
    }
    
    int Gioca(char nome[], int pacco) {//fare_offerta++;
        
        Fine();
        
        if ((fare_offerta==3 || fare_offerta==6 || fare_offerta==9 || fare_offerta==12 || fare_offerta==15 || fare_offerta==18))
         {
         offerta(nome, pacco);
         }
       /* if(fare_offerta==19)
        Fine();*/
        int chiama;        //Chiamata Pacco
        system("cls");
        printf( "Pacchi rimasti: ");
        for (int x = 0; x < 20; x++) {          //Mostra Pacchi Rimasti
            if (pacchi_rimanenti[x]!=pacchi_rimanenti[pacco-1] && pacchi_rimanenti[x]!=0) {
            printf("%d ",pacchi_rimanenti[x]);
                 }
            else {
                 printf( "  ");
                 }
            }
            
        for (int y = 0; y < num_pacchi; y++)
         {          
            if(p[y].contenuto_pacco!=0)
           printf("\n%s",p[y].premio); 
           else {
                 printf("\n");
                 }                  //Mostra Valori Rimasti
             
         }
            printf("\n");
              
            printf( "\n\n\n");
            printf( "Quale pacco vuoi chiamare? ");
            scanf("%d",&chiama);
            if(pacco!=chiama)
            {
            
            
            if (pacchi_rimanenti[chiama-1]!=0) {
            Apertura_Pacco();
            pacchi_rimanenti[chiama-1]=0;
            fare_offerta++;
            
            }
            else
            {
            printf( "\n\n\nHai gia' chiamato quel pacco!!!");
            
            }
            //Gioca(nome,pacco);
            }
            else printf("Non puoi chiamare il tuo pacco...Premi invio per inserire un pacco diverso\n");
            
            
            getchar();
      
            Gioca(nome, pacco);
    
    }
    
    int offerta(char nome[], int pacco) {
        int scelta;
        int tipo_offerta;
        int tot_pacchi_rimasti=0;                  //TOTale PaCchi
        int valore_pacchi_rimasti=0;             //TOTale RiManente
        int off;
        int x;
        tipo_offerta=rand()%2;
         
    if (tipo_offerta==0)
           {
        for (x=0; x < 20; x++) {
            if ((p[x].contenuto_pacco!=0) && (p[x].contenuto_pacco==-1)) 
            {
            valore_pacchi_rimasti += (p[x].contenuto_pacco+1);
            tot_pacchi_rimasti++;
            }      
            else if (p[x].contenuto_pacco!=0) 
            {
            
            valore_pacchi_rimasti += p[x].contenuto_pacco;
            tot_pacchi_rimasti++;
            
            }
               
        }
        system("cls");
        off = ((valore_pacchi_rimasti / tot_pacchi_rimasti));
        off=off*0.1;
        printf( "%s , per te l'offerta e': %d ",nome,off);
        for (int y = 0; y < 20; y++) {          //Mostra Valori Rimasti
            if (p[y].contenuto_pacco!=0) {
            printf("\n%s",p[y].premio);
            
                 }
            else {
                 printf("\n");
                 }
            }
        printf("\n");
        printf( "\nAccetti l'offerta? (1)-(SI) - (0)-(NO)\n");
        while (scelta > 1 || scelta < 0)
        scanf("%d",&scelta);
        if (scelta==1) {
                       system("cls");
                       printf( "Hai vinto: %d",off);
                       printf("\n");
                       system("Pause");
                       exit (1);
                       }
    }
    else 
        {   
            
            int park,nuovo,scelta_cambio;
            //cambio_finito=0;
            if(cambio_finito==0)
            {
            fare_offerta--;
            printf("Vuoi cambiare pacco? 1-Si 0-No");
            
            while (scelta_cambio> 1 || scelta_cambio< 0)
            scanf("%d",&scelta_cambio);
            
            if (scelta_cambio==1)
             {
              printf("\nCon quale pacco vuoi cambiare il tuo?\nNuovo pacco: ");
              scanf("%d",&nuovo);
              park=pacco;
              pacco=nuovo;
              nuovo=park;        
              cambio_finito=1;
              Gioca(nome,pacco);
            }
            else
                {//printf("\nnumero offerte:%d\n",fare_offerta);
                 
                
                //fare_offerta--;
                fare_offerta++;
                
                cambio_finito=1;
                
                
                
                }
               // fare_offerta++;
             //cambio_finito=0;   
             }
            // fare_offerta++; 
            
            
            
             
             
             Gioca(nome,pacco);
            
              
            
        }
       
    }    
    
    int Apertura_Pacco() {
        
        int PcVal;
        system("cls");
        printf( "Il valore del pacco e': ");
        PcVal = rand() % 20;
        
    
            while (p[PcVal].contenuto_pacco==0) {
                  PcVal = rand() % 20;
                  }
                  
        printf("%s",p[PcVal].premio);
        p[PcVal].contenuto_pacco=0;
        
    getchar();    
    }
    
    int Fine() {
        char *TotWn;
        int temp,flag=1;
             //TOTale WiN        Totale Vincita
        if (fare_offerta==19)
        {
        system("cls");
        
        for (int y = 0; y < 20; y++) 
          {                                       //Trova Valore che hai vinto
            if (p[y].contenuto_pacco!=0) 
               if (p[y].contenuto_pacco!=-1)
            TotWn =p[y].premio;
            
            else {
              flag=0;
              temp=y;   
                 }
          }
                  if(flag)
                       printf( "Hai vinto: %s!!!\n\n",TotWn);
                       
                  else 
                  printf("hai vinto: %s\n",p[temp].premio);
                       system("Pause");
                       exit (1);
                       }
                       getchar();
    } 
    
    il problema sta che quando decido di non cambiare pacco mi fa di nuovo l'offerta mentre me la dovrebbe rifare tra altre 3 chiamate di pacco,perchè la richiesta di acmbio pacco è anch'essa un offerta
  • Re: Problema con programma C

    Trovato l'errore ?
  • Re: Problema con programma C

    Ahahaha !!!! Quando funziona ci posso giocare ?
    Scherzi a parte non ho volgia di guardare tutto il codce ma molto probabilmente il problema sta in qulache if else considerando he ci sono molti if annidati.
    Come mai usi il C e non magari il c# ?
    sei uno studente di scuola superiore ?
Devi accedere o registrarti per scrivere nel forum
4 risposte