Oppure

Loading
07/10/08 12:18
Lego86
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[i]<1)
{
app=num[i];
cout<<priminum[app],"cento";
}
else if(num[i]==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
aaa
07/10/08 15:34
Overflow
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:
cout << "ciao " << "mondo";
aaa
07/10/08 16:52
Lego86
#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[i]=='0')
num[i]=0;
else
{
if(numin[i]=='1')
num[i]=1;
else
{
if(numin[i]=='2')
num[i]=2;
else
{
if(numin[i]=='3')
num[i]=3;
else
{
if(numin[i]=='4')
num[i]=4;
else
{
if(numin[i]=='5')
num[i]=5;
else
{
if(numin[i]=='6')
num[i]=6;
else
{
if(numin[i]=='7')
num[i]=7;
else
{
if(numin[i]=='8')
num[i]=8;
else
{
if(numin[i]=='9')
num[i]=9;
}
}
}
}
}
}
}
}
}
}
switch(len)
{
case 1:
{
val=num[i];
cout<<priminum[val];
}
break;
case 2:
{
decineunita;
if(zerodec==1)
{
i++;
val=num[i];
cout<<priminum[val];
}
}
break;
case 3:
{
centinaia;
i++;
conta=0;
decineunita;
if(zerodec==1)
{
i++;
val=num[i];
cout<<priminum[val];
}
break;
case 4:
{
decineunita;
if(conta==0)
i++;
migliaia;
i++;
centinaia;
i++;
conta=0;
decineunita;
if(zerodec==1)
{
i++;
val=num[i];
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[i];
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[i];
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[i]<1)
{
app=num[i];
cout<<priminum[app],"cento";
}
else if(num[i]==1)
cout<<"cento";
}

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



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

eccolo, grazie :(
aaa
07/10/08 16:56
Lego86
aspetta, mancava l'ultima parentesi graffa! Grazie, ora però devo rivedere altre piccole cose..
aaa
07/10/08 17:18
gioser
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 07/10/08 17:19
aaa
07/10/08 18:38
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:
aaa
07/10/08 22:14
gioser
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?
aaa
07/10/08 22:15
gioser
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?
aaa