[C++] esercizio

jorja92
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!!!

Risposte
nessuno.nobody
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 ;)

jorja92
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;
}

nessuno.nobody
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;
}

jorja92
E' vero, non ci avevo pensato :oops: .... Grazie ancora!!!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.