PDA

View Full Version : Problema in C, HELP ME


Columb
30-01-2006, 22:13
Premesso che del C...@school nn abbiamo fatto molto...3settimane max...
mi è stato dato da fare questo problema...:
Dato in input il mese e l'anno fornire in output il numero di giorni che compongono il mese.

Sto facendolo con DEV-C++ ma nn riesco...mi dice:
In function `int main()':
27 non-lvalue in assignment
[Build Error] [mese.o] Error 1


Vi prego aiutatemi a capire cosa nn va....

#include <cstdlib>
#include <iostream>

using namespace std;
char mese, gennaio, febbraio, marzo, aprile, maggio, giugno, luglio, agosto, settembre, ottobre, novembre, dicembre;
int anno;
int main(){
cout<<"Inserisci il nome del mese con caratteri minuscoli"<<mese;
cin>>mese;
cout<<"Inserisci l'anno"<<anno;
cin>>anno;
{
if(mese=aprile||giugno||settembre||novembre)
{
cout<<"Il mese dura 30 giorni"<< endl;
}
else
{
if(mese=gennaio||marzo||maggio||luglio||agosto||ottobre||dicembre)
{
cout<<"Il mese dura 31 giorni"<<endl;
}
else
{
if(mese=febbraio)
{
if(anno%4=0)
{
cout<<"Il mese dura 29 giorni"<<endl;
if(anno%4!=0)
{
cout<<"Il mese dura 28 giorni"<<endl;
}
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
}
}
}

andbin
31-01-2006, 10:24
Premesso che del C...@school nn abbiamo fatto molto...3settimane max...
mi è stato dato da fare questo problema...:
Dato in input il mese e l'anno fornire in output il numero di giorni che compongono il mese.

Sto facendolo con DEV-C++ ma nn riesco...mi dice:
In function `int main()':
27 non-lvalue in assignment
[Build Error] [mese.o] Error 1
Alt!!!!! ;) No no!
A parte il fatto che il tuo sorgente è "C++" e non "C", comunque è tutto sbagliato. Hai dichiarato delle variabili con i nomi dei mesi (e non va bene) e poi hai sbagliato i test negli if e il test dell'anno bisestile non è comunque completo.

Ecco il mio sorgente:
#include <cstring>
#include <iostream>

using namespace std;

char *nomi_mesi[] =
{
"gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno",
"luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"
};

int giorni_mesi[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int main (void)
{
int anno, mese = -1, i, giorni;
char strmese[20];

cout << "Inserisci il nome del mese con caratteri minuscoli: ";
cin >> strmese;

cout << "Inserisci l'anno: ";
cin >> anno;

for (i=0; i<12; i++)
{
if (strcmp (strmese, nomi_mesi[i]) == 0)
{
mese = i;
break;
}
}

if (mese == -1)
cout << "Nome mese non corretto" << endl;
else
{
giorni = giorni_mesi[mese];

if ((anno%4 == 0 && anno%100 != 0) || anno%400 == 0)
{
/* Anno bisestile */
if (mese == 1)
giorni++;
}

cout << "Il mese " << strmese << " " << anno << " ha " << giorni << " giorni" << endl;
}

return 0;
}
Se c'è qualcosa che non ti è chiaro ... chiedi pure! ;)

EDIT: ho tolto #include <cstdlib> che in effetti non serve.

Columb
31-01-2006, 18:20
Grazie mille x il codice...anke x quello cha hai postato sul html.it
xò nn ci hanno spiegato nemmeno "for"....alla fine ho pensato che i mesi nn dovevano necessariamente essere a parole visto che char prende solo la prima lettera(nn lo sapevo)...e infine il codice che ho scritto è questo...


#include <iostream>

using namespace std;
int mese, anno;
int main(){
cout<<"Inserisci il numero del mese"<<endl;
cin>>mese;
cout<<"Inserisci l'anno"<<endl;
cin>>anno;

if((mese==4)||(mese==6)||(mese==9)||(mese==11))
{
cout<<"Il mese dura 30 giorni"<< endl;
}
if((mese==1)||(mese==3)||(mese==5)||(mese==7)||(mese==8)||(mese==10)||(mese==12))
{
cout<<"Il mese dura 31 giorni"<<endl;
}
if(mese==2)
{
if(anno%4==0)
{
cout<<"Il mese dura 29 giorni"<<endl;
}
else
{
cout<<"Il mese dura 28 giorni"<<endl;
}
}
if(mese>12)
{
cout<<"Non esiste un mese con quel numero"<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}


CMQ grazie