[C++] esercizio
Sempre con la stessa premessa dell'altra volta:
Premessa: senza usare istruzioni di controllo di flusso (niente istruzioni condizionali e iterative, ma solo esecuzione sequenziale). Facendo uso solo di variabili tipo int e operatori +, *, -, /, %, abs().
(le cose che non possiamo usare è perchè dobbiamo ancora farle, per questo il prof. l'ha premesso).
Mi aiutate a capire questo esercizio?
Ecco il testo:
Scrivere un programma che legge in ingresso quattro numeri, li interpreta come due tempi espressi in minuti e secondi, e stampa la differenza tra i due tempi, espressa in secondi.
Ecco il mio file sorgente:
#include
using namespace std;
int main ()
{
int x, y, z, t;
i=(x*60+y);
j=(z*60+t);
cout<<"Minuti e secondi del primo tempo";
cin>>x>>y;
cout<<"Minuti e secondi del secondo tempo";
cin>>z>>t;
cout<<"Secondi del primo tempo";
cin>>i;
cout<<"Secondi del secondo tempo";
cin>>j;
cout<<"Differenza"<
return 0;
}
L'errore che mi esce riguarda le due variabili i e j: questo è l'ultimo salvataggio del file, le parentesi le avevo messe per vedere se capiva meglio a cosa uguagliare i e j, ma esce sempre lo stesso errore, cioè non le riconosce... io vorrei usare i e j per fare la differenza tra i due tempi, dopo averli trasformati in secondi entrambi.
Secondo voi?
Grazie!!!
Premessa: senza usare istruzioni di controllo di flusso (niente istruzioni condizionali e iterative, ma solo esecuzione sequenziale). Facendo uso solo di variabili tipo int e operatori +, *, -, /, %, abs().
(le cose che non possiamo usare è perchè dobbiamo ancora farle, per questo il prof. l'ha premesso).
Mi aiutate a capire questo esercizio?
Ecco il testo:
Scrivere un programma che legge in ingresso quattro numeri, li interpreta come due tempi espressi in minuti e secondi, e stampa la differenza tra i due tempi, espressa in secondi.
Ecco il mio file sorgente:
#include
using namespace std;
int main ()
{
int x, y, z, t;
i=(x*60+y);
j=(z*60+t);
cout<<"Minuti e secondi del primo tempo";
cin>>x>>y;
cout<<"Minuti e secondi del secondo tempo";
cin>>z>>t;
cout<<"Secondi del primo tempo";
cin>>i;
cout<<"Secondi del secondo tempo";
cin>>j;
cout<<"Differenza"<
}
L'errore che mi esce riguarda le due variabili i e j: questo è l'ultimo salvataggio del file, le parentesi le avevo messe per vedere se capiva meglio a cosa uguagliare i e j, ma esce sempre lo stesso errore, cioè non le riconosce... io vorrei usare i e j per fare la differenza tra i due tempi, dopo averli trasformati in secondi entrambi.
Secondo voi?
Grazie!!!
Risposte
Le variabili i e j non sono mai state dichiarate!
int x,y,z,t,i,j;
Così avrebbe senso la dichiarazione.
Non ha senso comunque, fare:
i=(x*60+y);
j=(z*60+t);
Senza aver mai letto il contenuto delle variabili.
Quella operazione la puoi fare una volta che conosci il valore di x,y,z e t!
Altrimenti il risultato sarà imprevedibile, in quanto le variabili non inizializzate hanno un valore casuale al loro interno.
Quindi, procedendo per punti:
1) Dichiara tutte le variabili che userai (questo è molto C style, ma per iniziare va bene così, non piazzare le inizializzazioni in mezzo al codice per ora).
2) Inizializza le variabili chiedendo all'utente cosa fare.
3) Usa la tua formula per attribuire i valori corretti ad i e a j.
4) Stampa i risultati (valore di i e j)
Saluti
int x,y,z,t,i,j;
Così avrebbe senso la dichiarazione.
Non ha senso comunque, fare:
i=(x*60+y);
j=(z*60+t);
Senza aver mai letto il contenuto delle variabili.
Quella operazione la puoi fare una volta che conosci il valore di x,y,z e t!
Altrimenti il risultato sarà imprevedibile, in quanto le variabili non inizializzate hanno un valore casuale al loro interno.
Quindi, procedendo per punti:
1) Dichiara tutte le variabili che userai (questo è molto C style, ma per iniziare va bene così, non piazzare le inizializzazioni in mezzo al codice per ora).
2) Inizializza le variabili chiedendo all'utente cosa fare.
3) Usa la tua formula per attribuire i valori corretti ad i e a j.
4) Stampa i risultati (valore di i e j)
Saluti

Grazie!
L'ho riscritto così e mi viene (solo i calcoli mi escono tutti attaccanti, senza spazi, ma forse perchè non abbiamo ancora fatto bene le spaziature):
#include
using namespace std;
int main ()
{
int x, y, z, t, i, j;
cout<<"Minuti e secondi del primo tempo";
cin>>x>>y;
cout<<"Minuti e secondi del secondo tempo";
cin>>z>>t;
cout<<"Secondi del primo tempo"<
cout<<"Secondi del secondo tempo"<
i=x*60+y;
j=z*60+t;
cout<<"Differenza"<
return 0;
}
L'ho riscritto così e mi viene (solo i calcoli mi escono tutti attaccanti, senza spazi, ma forse perchè non abbiamo ancora fatto bene le spaziature):
#include
using namespace std;
int main ()
{
int x, y, z, t, i, j;
cout<<"Minuti e secondi del primo tempo";
cin>>x>>y;
cout<<"Minuti e secondi del secondo tempo";
cin>>z>>t;
cout<<"Secondi del primo tempo"<
j=z*60+t;
cout<<"Differenza"<
}
Dato che stai usando il namespace std, al suo interno è definito il carattere di nuova riga (come vedo che già sai), quindi, semplicemente formatta il tutto aggiungendo qualche spazio dove necessario e i newline, così:
#include <iostream> using namespace std; int main () { int x, y, z, t, i, j; cout<<"Minuti e secondi del primo tempo: "; cin>>x>>y; cout<<"Minuti e secondi del secondo tempo: "; cin>>z>>t; cout<<"Secondi del primo tempo: "<< x*60+y << endl; cout<<"Secondi del secondo tempo: "<< z*60+t << endl; i=x*60+y; j=z*60+t; cout<<"Differenza: "<<j-i<<endl; return 0; }
E' vero, non ci avevo pensato
.... Grazie ancora!!!
