Argomento di if non funziona

di il
13 risposte

Argomento di if non funziona

Premetto che sono un programmatore veramente alle prime armi, però le funzioni di if mi sembrava di saperle usare.
Il problema è questo:
 if (cont_dozzina <= 2)
  puntata == 0;
  else if (cont_dozzina == 2)
  puntata == 1;
  else if (cont_dozzina == 3)
  puntata == 3;
  else if (cont_dozzina == 4)
  puntata == 5;
  else if (cont_dozzina >= 5)
  puntata == 10;
Da altre parti io comando il cont_dozzina che funziona [ho testato con printf il fatto che varia]
Il problema è che "puntata" rimane 0 [valore di default a inizio foglio] in qualsiasi caso... Non so + che pesci pigliare!

13 Risposte

  • Re: Argomento di if non funziona

    Ciao, puntata rimane sempre zero (tuo valore di default) perchè negli else if tu non lo vai mai a modificare, questo perchè == serve a confrontare due variabili, invece = ti permette di assegnare un valore ad una variabile.

  • Re: Argomento di if non funziona

    Ciao skyller00 di seguito il codice funzionanante:
    
    if (cont_dozzina < 2)
      puntata = 0;
       else if (cont_dozzina == 2)
      puntata = 1;
      else if (cont_dozzina == 3)
      puntata = 3;
      else if (cont_dozzina == 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
    il problema era che tu mettevi puntata==1(il doppio uguale si usa x comparare due numeri) ma invece ci voleva un solo uguale cosi assegni a puntata il valore che vuoi. Poi ho tolto nel primo if il <= perchè nel primo if else controlli se il valore è uguale a 2 quindi creavi un conflitto. Inserendo 2 la puntata poteva essere sia 0 che 1. Spero di essere stato chiaro se no chiedi pure!
  • Re: Argomento di if non funziona

    Ho tentato sia:
    if (cont_dozzina <= 2)
      puntata = 0;
      else if (cont_dozzina == 2)
      puntata = 1;
      else if (cont_dozzina == 3)
      puntata = 3;
      else if (cont_dozzina == 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
    sia:
    if (cont_dozzina <= 2)
      puntata = 0;
      else if (cont_dozzina = 2)
      puntata = 1;
      else if (cont_dozzina = 3)
      puntata = 3;
      else if (cont_dozzina = 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
    ma nulla non funziona
  • Re: Argomento di if non funziona

    Secondo me dovresti postare l'intero codice in modo da permettere di capire un pò meglio.
  • Re: Argomento di if non funziona

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
      //variabili interessanti
      int numero;
      int puntata=0;
      int puntata_max=0;
      int totale;
      int cont_dozzina=0;
      int cont_colonna=0;
      
        
      //definisco totale 
    
      printf("Da quanto vuoi partire?\n");
      scanf("%d", &totale);
      printf("Totale: %d\n", totale);
      printf("Ok si parte\n");
      
      //primo numero 
      
      printf("Immetti primo numero:");
      scanf("%d", &numero);
      if (numero < 13 && numero !=0)
      cont_dozzina++;
      else 
      cont_dozzina=0;
      
      //attualmente inutilizzato
      if (numero ==0)
      cont_colonna=0;
      else if (numero % 3 == 1)
      cont_colonna++;
      else
      cont_colonna=0;
      //aggiungere tutte le altre opzioni
      
      
      //tentativo 
     while (totale<10000)
     
     {
           //tabella vincite
           int TOTALE=totale;
    if (numero > 13)
    totale=TOTALE+puntata;
    else 
    totale=TOTALE-puntata;
      
      
      
      //gioco in sè
      printf("Immetti numero:");
      scanf("%d", &numero);
      
      //ciclo riconoscimento
    if (numero < 13 && numero !=0)
      cont_dozzina++;
      else 
      cont_dozzina=0;
      printf("Cont_dozzina:%d\n", cont_dozzina);
      
      //decisione di puntata "NON VA!"
      if (cont_dozzina < 2)
      puntata = 0;
       else if (cont_dozzina == 2)
      puntata = 1;
      else if (cont_dozzina == 3)
      puntata = 3;
      else if (cont_dozzina == 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
      
      //puntata max
      if (puntata > puntata_max)
      puntata_max = puntata;
      else
      puntata_max=puntata_max;
    
      //visualizzazione
      printf("\n Totale: %d, Puntata: %d, Puntata_max: %d\n", totale, puntata, puntata_max);
    }
      
      
      system("PAUSE");	
      return 0;
    }
    
    In teoria un sistema che punta sulla seconda e sulla terza dozzina se per 2 volte è uscita la prima
  • Re: Argomento di if non funziona

    Sinceramente non ho capito molto forse se mi dici che cosa vorresti fare con questo programma, ad esempio commentando ogni pezzo a cosa serve, forse posso aiutarti.
  • Re: Argomento di if non funziona

    In teoria è un piccolo programma che "gioca" alla roulette con i numeri che immetto io.
    Dovrebbe, per esempio, puntare su 2° e 3° dozzina dopo che per 2 volte di fila è uscita la 1°.
    Dopodichè dovrebbe comunicare di quanto è stata la puntata, la puntata massima nella partita in corso e il totale a ogni mano.
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {[b]QUA DICHIARO LE VARIABILI[/b]
      //variabili interessanti
      int numero;
      int puntata=0;
      int puntata_max=0;
      int totale;
      int cont_dozzina=0;
      int cont_colonna=0;
      
        
      //definisco totale 
    [b]QUA LE PUNTATE DA QUANTO SONO DI DEFAULT E IL TOTALE[/b]
      printf("Da quanto vuoi partire?\n");
      scanf("%d", &totale);
      printf("Totale: %d\n", totale);
      printf("Ok si parte\n");
      
      //primo numero 
      [b]QUI IL PRIMO NUMERO ESTRATTO E L'INCREMENTO DEL
    CONT_DOZZINA CHE MI DICE DA QUANTE ESTRAZIONI ESCE LA
    PRIMA DOZZINA[/b]
      printf("Immetti primo numero:");
      scanf("%d", &numero);
      if (numero < 13 && numero !=0)
      cont_dozzina++;
      else 
      cont_dozzina=0;
      
      //attualmente inutilizzato
      if (numero ==0)
      cont_colonna=0;
      else if (numero % 3 == 1)
      cont_colonna++;
      else
      cont_colonna=0;
      //aggiungere tutte le altre opzioni
      
      
      //tentativo 
    [b]GIOCO FINO A 10000 DI TOTALE[/b]
     while (totale<10000)
     
     {
           //tabella vincite
    [b]AUMENTO DEL TOTALE IN BASE ALL'ESTRAZIONE, (AL PRIMO GIRO NON FUNZIONA)[/b]
           int TOTALE=totale;
    if (numero > 13)
    totale=TOTALE+puntata;
    else 
    totale=TOTALE-puntata;
      
      
      
      //gioco in sè
      printf("Immetti numero:");
      scanf("%d", &numero);
      
      //ciclo riconoscimento
    [b]RICONOSCE SE IL NUMERO APPARTIENE ALLA PRIMA O ALLE ALTRE DOZZINE[/b]
    if (numero < 13 && numero !=0)
      cont_dozzina++;
      else 
      cont_dozzina=0;
      printf("Cont_dozzina:%d\n", cont_dozzina);
      
      //decisione di puntata "NON VA!"
    [b]PUNTATA[/b]
      if (cont_dozzina < 2)
      puntata = 0;
       else if (cont_dozzina == 2)
      puntata = 1;
      else if (cont_dozzina == 3)
      puntata = 3;
      else if (cont_dozzina == 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
      
      //puntata max
    [b]EVENTUALE AUMENTO DELLA PUNTATA MAX[/b]
      if (puntata > puntata_max)
      puntata_max = puntata;
      else
      puntata_max=puntata_max;
    
      //visualizzazione
      printf("\n Totale: %d, Puntata: %d, Puntata_max: %d\n", totale, puntata, puntata_max);
    }
      
      
      system("PAUSE");	
      return 0;
    }
    
  • Re: Argomento di if non funziona

    Ho provato a capire il codice ma il mio problema è che non conosco il gioco della roulette ( strano ma vero ) quindi non posso aiutarti sul programma nel suo complesso, si dovrà aspettare qualche utente che ha capito la logica del programma perchè conosce il gioco.

  • Re: Argomento di if non funziona

    Per quello che serve conoscere le regole sono che se esce un numero tra quelli che hai puntato (per me dal 13 al 36) vinco, altrimenti perdo.
  • Re: Argomento di if non funziona

    Premetto di non aver capito bene come si gioca però secondo me la parte di codice
    if (numero < 13 && numero !=0)
      cont_dozzina++;
        
      else 
      cont_dozzina=0;
      printf("Cont_dozzina:%d\n", cont_dozzina);
      
      //decisione di puntata "NON VA!"
    //[b]PUNTATA[/b]
      if (cont_dozzina < 2)
      puntata = 0;
       else if (cont_dozzina == 2)
      puntata = 1;
      else if (cont_dozzina == 3)
      puntata = 3;
      else if (cont_dozzina == 4)
      puntata = 5;
      else if (cont_dozzina >= 5)
      puntata = 10;
    funziona correttamente e "puntata" viene stampata correttamente variando in base a "cont_dozzina".
  • Re: Argomento di if non funziona

    Non va... prova a creare l'eseguibile... Immetti tante volte un numero tra 1 e 12... la puntata dopo il secondo dovrebbe aumentare invece rimane uguale (Al primo giro non ho messo il printf per le informazioni)
  • Re: Argomento di if non funziona

    Togliendo il fine... Perchè quando cont_dozzina sale a 2 e più puntata non varia?
  • Re: Argomento di if non funziona

    Risolto! Mettendo a cont_dozzina == e a puntata =.
    Grazie mille
Devi accedere o registrarti per scrivere nel forum
13 risposte