PDA

View Full Version : [C]Mi date una mano con questo programmino?


stgww
21-04-2008, 17:15
Ciao, mi spiegate cosa c'è che non va ?

#include <stdio.h>
#include <stdlib.h>

struct ora{
int ore, minuti, secondi;
}

int carica()
{
struct ora orario;
printf("Inserisci ore\n");
scanf("%i", &orario.ore);
printf("Inserisci minuti\n");
scanf("%i", &orario.minuti);
printf("Inserisci secondi\n");
scanf("%i", &orario.secondi);

return orario;
}

int menu()
{
int scelta=0;
while(scelta=!5)
{
printf("Menu\n\n\1)Converti Orario in secondi\n2)Converti seocndi in ore\n3)Somma due orari\n4)Tempo che manca alla fine del giorno\n5)Esci\n");
scanf("%i", &scelta);
}

return scelta;
}

int conversione(struct ora orario)
{
int a=0,b=0,conv=0;
a=orario.ore/3600;
b=orario.minuti/60;
conv=orario.secondi+a+b;

return conv;
}

int coversione0()
{
float h=0,m=0,s=0,secondi=0;

printf("Inserisci secondi da convertire\n");
scanf("%f", &secondi);
h=secondi/3600;
m=secondi/60-h*60;
s=secondi-h*3600-m*60;
printf("L'orario convertito e'\n %f:%f:%f",h,m,s);
return 0;
}

int somma()
{
int i=0,a=0,b=0,c=0,d=0,h=0,m=0,s=0;
i=carica();
a=conversione(i);
c=carica();
b=conversione(c);
d=a+b;
h=d/3600;
m=d/60-h*60;
s=d-h*3600-m*60;
printf("L'orario sommato e'\n %f:%f:%f",h,m,s);
return 0;
}


int tempo()
{
int i=0,sr=0,h=0,m=0,s=0;
i=conversione(struct ora orario);
sr=86400-i;
h=sr/3600;
m=sr/60-h*60;
s=sr-h*3600-m*60;
printf("Il tempo rimanente e'\n %f:%f:%f",h,m,s);

return 0;
}

int main(){
int i=0,a=0,b=0,c=0,d=0;
carica();
i=menu();
switch(i){
case 1:a=conversione(struct ora orario);
break;
case 2:b=conversione0();
break;
case 3:c=somma();
break;
case 4:d=tempo();
break;
}

system("PAUSE");
return 0;
}



Thx a lot

andbin
21-04-2008, 17:36
Ciao, mi spiegate cosa c'è che non va ?Già solo il fatto, ad esempio, che carica() dichiara di restituire un int ma poi il return lo fai di una struttura struct ora. E poi comunque nel main() chiami questa funzione ma non ne usi il valore di ritorno (?).
In tempo() fai una chiamata i=conversione(struct ora orario); che non ha senso. In somma() chiami conversione() ma gli passi un int mentre conversione si aspetta una struct ora.

Insomma ... è da sistemare molto bene.

cionci
21-04-2008, 20:10
Concordo...e manca anche un ; alla fine della dichiarazione della struct.

stgww
21-04-2008, 23:16
Ok, grazie, scusate un'altra domanda :
nel switch case si può fare una cosa del tipo
...case 1,2,3:...
per indicargli che per i casi in cui si dovesse scegliere 1 o 2 o 3 dovrebbe eseguire lo stesso comando?

cionci
21-04-2008, 23:23
No, non si può, però puoi fare:

case 1:
case 2:
case 3: codice

stgww
21-04-2008, 23:30
No, non si può, però puoi fare:

case 1:
case 2:
case 3: codice

ok, thx a a lot. Domani ho il compito, speriamo bene!

marra11mg
22-04-2008, 11:21
Concordo...e manca anche un ; alla fine della dichiarazione della struct.

VOTO 2!! asdasd;)