Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore sconosciuto in una procedura..
Forum - C/C++ - Errore sconosciuto in una procedura..

Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 14:18
Martedì, 07/10/2008
Salve, volevo sapere se qualcuno può aiutarmi riguardo un piccolo problema. Non ho idea del perchè ma con questa procedura:
void centinaia(void)
{
    if(num<1)
    {
         app=num;
         cout<<priminum[app],"cento";
    }
    else if(num==1)
         cout<<"cento";
}
ma anche con le altre analoghe che ci sono nel sorgente (me ne sono accorto perchè se inverto l'ordine delle procedure me lo dà lo stesso) mi da un "parse error before '{'" che si riferisce alla prima graffa subito dopo il void ed un errore identico sulla riga dell' "else if..". La cosa strana è che se copio questa proceduara pari pari in un altro sorgente e dichiaro queste variabili non mi dà l'errore. Com'è possibie? Grazie

PM Quote
Avatar
Overflow (Normal User)
Expert


Messaggi: 334
Iscritto: 11/01/2008

Segnala al moderatore
Postato alle 17:34
Martedì, 07/10/2008
posta il codice interamente, credo che l'errore sia precedentemente. Verifica di aver chiuso la parentesi graffa nella funzione precedente.

Per stampare più valori con la cout devi fare cosi:
Codice sorgente - presumibilmente Plain Text

  1. cout << "ciao " << "mondo";


PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 18:52
Martedì, 07/10/2008
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
int i,app,len,zerodec,conta,val,calc;
int num[6];
char numin[7];
void decineunita(void);
void centinaia(void);
void migliaia(void);
const char *priminum[19]={"uno","due","tre","quattro","cinque","sei","sette",
      "otto","nove","dieci","undici","dodici","tredici","quattordici","quindici",
      "sedici","diciassette","diciotto","diciannove"};
      const char *decine[9]={"dieci","venti","trenta","quaranta","cinquanta",
      "sessanta","settanta","ottanta","novanta"};
      const char *decman[9]={"nondovrestivedermi","vent","trent","quarant",
      "cinquant","sessant","settant","ottant","novant"};
int main()
{
      i=1;
      zerodec=0;
      conta=0;
      cout<<"Programma che converte un numero in cifre in un numero in lettere.."<<endl;
      cout<<"Attenzione! Funziona solo con valori compresi tra 0 e 100000"<<endl;
      cout<<""<<endl;
      cout<<"Inserisci il numero da convertire..."<<endl;
      cin>>numin;
      len=strlen(numin);
      for(i=0;i<len;i++)
              {
               if(numin=='0')
                 num=0;
                 else
                 {
                 if(numin=='1')
                  num=1;
                  else
                  {
                  if(numin=='2')
                   num=2;
                   else
                   {
                   if(numin=='3')
                    num=3;
                    else
                    {
                    if(numin=='4')
                     num=4;
                     else
                     {
                     if(numin=='5')
                      num=5;
                      else
                      {
                      if(numin=='6')
                       num=6;
                       else
                       {
                       if(numin=='7')
                        num=7;
                        else
                        {
                        if(numin=='8')
                         num=8;
                         else
                         {
                         if(numin=='9')
                          num=9;
                         }
                        }
                       }
                      }
                     }
                    }
                   }
                  }
                 }
              }
      switch(len)
      {
         case 1:
         {
           val=num;
           cout<<priminum[val];
         }
           break;
         case 2:
         {
           decineunita;
           if(zerodec==1)
           {
               i++;
               val=num;
               cout<<priminum[val];
           }
         }
           break;
         case 3:
         {
           centinaia;
           i++;
           conta=0;
           decineunita;
           if(zerodec==1)
           {
               i++;
               val=num;
               cout<<priminum[val];
           }
           break;
         case 4:
         {
           decineunita;
           if(conta==0)
                i++;
           migliaia;
           i++;
           centinaia;
           i++;
           conta=0;
           decineunita;
           if(zerodec==1)
           {
                i++;
                val=num;
                cout<<priminum[val];
           }
         }
           break;
         case 5:
         {
           i++;
           decineunita;
           if(conta==0)
                i++;
           migliaia;
           i++;
           centinaia;
           i++;
           conta=0;
           decineunita;
           if(zerodec==1)
           {
                i++;
                val=num;
                cout<<priminum[val];
           }
         }
           break;
         case 6:
         {
           centinaia;
           i++;
           decineunita;
           if(conta==0)
                i++;
           migliaia;
           i++;
           centinaia;
           i++;
           conta=0;
           decineunita;
           if(zerodec==1)
           {
                i++;
                val=num;
                cout<<priminum[val];
           }
         }
           break;
         case 7:
           cout<<"Un milione"<<endl;
           break;
         default:
           cout<<"Numero non valido"<<endl;

      }
      cin>>i;
      system("PAUSE");
      return 0;
}

void centinaia(void)
{
    if(num<1)
    {
         app=num;
         cout<<priminum[app],"cento";
    }
    else if(num==1)
         cout<<"cento";
}

void migliaia(void)
{
    if(num!=1)
    {
       if(conta==0)
       {
           val=num;
           cout<<priminum[val];
       }
       cout<<"mila";
    }
    else
    cout<<"mille";
}



void decineunita(void)
{
     if(num>1)
     {
         val=num;
         if((num[i+1]==1) || (num[i+1]==8))
               decman[val];
               else
               decine[val];
         i++;
         val=num;
         cout<<priminum[val];
     }
     else
     if(num==1)
     {
         calc=10+num[i+1];
         cout<<priminum[calc];
     }
     else
     zerodec=1;
}

eccolo, grazie :(

PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 18:56
Martedì, 07/10/2008
aspetta, mancava l'ultima parentesi graffa! Grazie, ora però devo rivedere altre piccole cose..

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 19:18
Martedì, 07/10/2008
Le chiamate alle funzioni che non hanno parametri richiedono comunque le parentesi.

Quindi in tutti i posti dove chiami

void decineunita(void);
void centinaia(void);
void migliaia(void);

mettendo la chiamata senza parentesi come qui:

decineunita;

devi mettere le parentesi, così:

decineunita();

inoltre c'è la riga dove fai:

cout<<priminum[app],"cento";

la virgola e' un errore. Devi ripetere l'operatore << come segue:

cout<<priminum[app]<<"cento";

Per quanto riguarda la logica del programma... ti confesso che non l'ho guardata ;)

Ciao!

Ultima modifica effettuata da gioser il 07/10/2008 alle 19:19
PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 20:38
Martedì, 07/10/2008
Grazie mille, a volte sono errori stupidissimi. Non so se sono io che sono inesperto di c++, oppure è il compilatore che quando segnala gli errori va a cavoli suoi.. ora sto risolvendo alcuni problemi logici e se tutto va bene riesco a caricarlo sul sito..:k:

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 0:14
Mercoledì, 08/10/2008
Testo quotato

Postato originariamente da Lego86:

Grazie mille, a volte sono errori stupidissimi. Non so se sono io che sono inesperto di c++, oppure è il compilatore che quando segnala gli errori va a cavoli suoi.. ora sto risolvendo alcuni problemi logici e se tutto va bene riesco a caricarlo sul sito..:k:



le chiamate alle funzioni senza le parentesi sono tipici errori di chi proviene dal VB ;)

per quanto riguarda il compilatore... quello di VS2005 segnala correttamente tutti gli errori. Tu quale compilatore usi?

PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 0:15
Mercoledì, 08/10/2008
Testo quotato

Postato originariamente da Lego86:

Grazie mille, a volte sono errori stupidissimi. Non so se sono io che sono inesperto di c++, oppure è il compilatore che quando segnala gli errori va a cavoli suoi.. ora sto risolvendo alcuni problemi logici e se tutto va bene riesco a caricarlo sul sito..:k:



le chiamate alle funizoni senza parentesi sono tipici errori di chi proviene dal VB ;)

per quanto riguarda la segnalazione degli errori, il compilatore C++ del Visual Studio 2005 li segnala tutti correttamente. Tu quale compilatore stai usando?

PM Quote
Avatar
Lego86 (Member)
Rookie


Messaggi: 30
Iscritto: 04/10/2008

Segnala al moderatore
Postato alle 13:53
Mercoledì, 08/10/2008
Io uso dev-c++ v.4, so che è vecchia, ma nella 5 sono cambiate alcune cose e non mi trovo molto bene.
PS, io vengo dal Pascal;)

PM Quote