Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[C/C++] Errore che non riesco a capire
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
gianni_pb
Comune mortale
Comune mortale


Registrato: 09/07/08 17:42
Messaggi: 2

MessaggioInviato: 09 Lug 2008 17:46    Oggetto: [C/C++] Errore che non riesco a capire Rispondi citando

Vi premetto che non sono assolutamente un esperto....ma sto provando a fare un "piccolo" programmino...

questa è la prima parte:

Codice:


#include <iostream>
using namespace std;

//------------------------------------------------------
int anno, anno_corr=2008; // DA CAMBIARE X ANNI SUCCESSIVI!!! --------------------------------------------------------------------------------------
//------------------------------------------------------
int array_class[19];
char sex='\0', esist_u12='\0', esist_u14='\0', u12='\0', u14='\0', o50='\0', o55='\0'; //tuoi dati: sesso, under, over...
int class_iniz=0; //classifica iniziale (nn varia all'interno del programma)
int c=0; //indice della classifica

void funz_sex (); // sex
void funz_u12_u14 (); // anno di nascita
void funz_calc_class_iniz (); // class iniz
void funz_esist_u12_u14 (); // avvers U?

main ()
{   
     cout << "INFORMAZIONI INIZIALI " <<endl<<endl;
     funz_sex (); // sesso m/f?
     funz_u12_u14 (); // anno di nascita
     funz_calc_class_iniz (); // input della tua classifica     
     funz_esist_u12_u14 (); // hai battuto u12/u14?
     
     int punt_iniz; //punteggio iniziale in base alla classifica iniziale (nn cambia in caso di promozioni o retrocessioni)
     
                       cout << "Sex: " << sex; // controllo sex
                       cout << endl;                       
                       
                       cout << "u12 " << u12; // controllo risposta u12 giocatore
                       cout << endl;
                       
                       cout << "u14 " << u14; //controllo risposta u14 giocatore
                       cout << endl;
                                         
                       cout << "o50 " << o50; // controllo risposta u12 giocatore
                       cout << endl;
                       
                       cout << "o55 " << o55; //controllo risposta u14 giocatore
                       cout << endl;
                       
     system("pause");
     
}

//----------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------FUNZIONI------------------------------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------------------------------

void funz_sex ()
{
     do
     {
          cout << "Sei uomo o donna? m/f ";
          cin >> sex;
          if (sex != 'm' && sex != 'f')
             cout << "Errore! Risposta non corretta! Scegli m/f" <<endl;
     }
     while (sex != 'm' && sex != 'f');
     
                           cout << "Sex: " << sex; // controllo sex
                       cout << endl;     
}

void funz_u12_u14 ()
{
     do
     {
                  cout << "Inserisci il tuo anno di nascita: ";
                  cin >> anno;
                  if (anno<1900 || anno>=anno_corr-10)
                     if (anno-anno_corr<=10 && anno>1900 && anno<anno_corr)
                        cout << "Gli U10 non possono avere una classifica diversa da 4 nc" <<endl;
                     else
                        cout << "Errore! Risposta non corretta! (es.2008)" <<endl;
     }
     while (anno<1900 || anno>=anno_corr-10);
     
     if (anno_corr-anno==12 || anno_corr-anno==11)   u12='s';
     else                                            u12='n';
     
     if (anno_corr-anno==14 || anno_corr-anno==13)   u14='s';
     else                                            u14='n';
     
     if (anno_corr-anno>55 && sex=='m')              o55='s';
     else    o55='n';
           
     if (anno_corr-anno>50 && sex=='f')              o50='s';
     else    o50='n';
     
                       cout << "u12 " << u12; // controllo risposta u12 giocatore
                       cout << endl;
                       
                       cout << "u14 " << u14; //controllo risposta u14 giocatore
                       cout << endl;
                                         
                       cout << "o50 " << o50; // controllo risposta u12 giocatore
                       cout << endl;
                       
                       cout << "o55 " << o55; //controllo risposta u14 giocatore
                       cout << endl;

}

void funz_calc_class_iniz ()
{
     do
     {
         cout << "Qual e' la tua classifica attuale? Scegline una:" <<endl;
         cout << "21 22 23 24 25 26 27 28" <<endl;
         cout << "31 32 33 34 35" <<endl;     
         cout << "41 42 43 44 45" <<endl;
         cout << "NC (se NC, digita 0)" <<endl;
         cin >> class_iniz;
         cout <<endl;
         
         //array delle classifiche
         array_class[0]=21;
         array_class[1]=22;
         array_class[2]=23;
         array_class[3]=24;
         array_class[4]=25;
         array_class[5]=26;
         array_class[6]=27;
         array_class[7]=28;
         array_class[8]=31;
         array_class[9]=32;
         array_class[10]=33;
         array_class[11]=34;
         array_class[12]=35;
         array_class[13]=41;
         array_class[14]=42;
         array_class[15]=43;
         array_class[16]=44;
         array_class[17]=45;
         array_class[18]=50; //nc
         array_class[19]=99; //per assenza -----------------sarà un problema???
         
         if (class_iniz==0)
                 class_iniz=50;
         
         do c++; //scorri l'array della classifica finchè trovo il valore di c corrispondente alla classifica inserita
         while (array_class[c]!=class_iniz);

         if (class_iniz>0 && class_iniz<21 || class_iniz>28 && class_iniz<31 || class_iniz>35 && class_iniz<41 || class_iniz>45 && class_iniz!=50)
                cout << "Errore! Dato non corretto!" << endl << endl;
     }
     while (class_iniz>0 && class_iniz<21 || class_iniz>28 && class_iniz<31 || class_iniz>35 && class_iniz<41 || class_iniz>45 && class_iniz!=50);
}

void funz_esist_u12_u14 ()
{
     if (u12=='n')
     {
                  do
                  {
                             cout << "Hai incontrato e battuto almeno un U12?" << endl << "(non contare le vittorie per assenza) s/n ";
                             cin >> esist_u12;
                             if (esist_u12 != 's' && esist_u12 != 'n')
                                           cout << "Errore! Risposta non corretta! Scegli s/n" <<endl;
                  }
                  while (esist_u12 != 's' && esist_u12 != 'n');
     }
     
     if (u12=='n' && u14=='n')
     {
                  do
                  {
                             cout << "Hai incontrato e battuto almeno un U14?" << endl << "(non contare le vittorie per assenza) s/n ";
                             cin >> esist_u14;
                             if (esist_u14 != 's' && esist_u14 != 'n')
                                           cout << "Errore! Risposta non corretta! Scegli s/n" <<endl;
                  }
                  while (esist_u14 != 's' && esist_u14 != 'n');
     }
}








Inserendo correttamente il Sesso, inizialmente l'output è corretto, ma il controllo che è presente alla fine del programma, come potete notare, dà sex=c! Confused
e in più non "vede" l'opzione u12 (ovvero non ti dice se sei under 12 o meno)


La cosa assurda è che se tolgo la funzione void funz_calc_class_iniz (); funziona tutto!
Top
Profilo Invia messaggio privato
gianni_pb
Comune mortale
Comune mortale


Registrato: 09/07/08 17:42
Messaggi: 2

MessaggioInviato: 09 Lug 2008 21:06    Oggetto: Rispondi

vabbè ho trovato l'errore: int array_class[20];

8)

grazie lo stesso
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi