riemann_01
26-05-2006, 15:08
[Modificato]
Buongiorno a tutti! Questo e' il mio primo post! Mi chiamo Francesco ed ho quattordici anni.
Da qualche giorno ho iniziato a studiare il linguaggio di programmazione C++ e sto scoprendo lentamente un mondo nuovo per me affascinante.
Durante lo svolgimento di alcuni esercizi di riepilogo a fine capitolo, contenuti nel libro che ho acquistato, ho incontrato le prime difficolta'.
Il programma che segue, da me scritto, effettua una semplice conversione tra scale di temperatura.
// temp.cc - temperature converter, integer value
#include <iostream>
using namespace std;
void convert(int temp, char c)
{
int x;
switch(c) {
case 'f':
x = static_cast<int>(5.0 / 9.0 * (temp - 32.0));
cout << "Tc = " << x << endl;
break;
case 'c':
x = static_cast<int>(9.0 / 5.0 * temp + 32.0);
cout << "Tf = " << x << endl;
break;
default:
cout << "an error occured!";
}
}
int main()
{
int t;
char ch;
cout << "Temperature converter - °F ~ °C\n";
do {
cout << "Scale? (c/f): ";
cin >> ch;
} while(ch != 'f' && ch != 'c');
cout << "Valore: ";
cin >> t;
convert(t,ch);
}
Per quale motivo l'espressione di controllo dell'istruzione do while funziona esclusivamente con un AND?
Ragionando sulla condizione questa non dovrebbe essere del tipo "finquando il carattere digitato non e' uguale a f o c riproponi l'input?".
Se cosi fosse perche' non puo' essere codificata con un OR? (loop!)
do {
cout << "Scala? (c/f): ";
cin >> ch;
} while(ch != 'f' || ch != 'c');
Chi puo' darmi delucidazioni a riguardo?
Buongiorno a tutti! Questo e' il mio primo post! Mi chiamo Francesco ed ho quattordici anni.
Da qualche giorno ho iniziato a studiare il linguaggio di programmazione C++ e sto scoprendo lentamente un mondo nuovo per me affascinante.
Durante lo svolgimento di alcuni esercizi di riepilogo a fine capitolo, contenuti nel libro che ho acquistato, ho incontrato le prime difficolta'.
Il programma che segue, da me scritto, effettua una semplice conversione tra scale di temperatura.
// temp.cc - temperature converter, integer value
#include <iostream>
using namespace std;
void convert(int temp, char c)
{
int x;
switch(c) {
case 'f':
x = static_cast<int>(5.0 / 9.0 * (temp - 32.0));
cout << "Tc = " << x << endl;
break;
case 'c':
x = static_cast<int>(9.0 / 5.0 * temp + 32.0);
cout << "Tf = " << x << endl;
break;
default:
cout << "an error occured!";
}
}
int main()
{
int t;
char ch;
cout << "Temperature converter - °F ~ °C\n";
do {
cout << "Scale? (c/f): ";
cin >> ch;
} while(ch != 'f' && ch != 'c');
cout << "Valore: ";
cin >> t;
convert(t,ch);
}
Per quale motivo l'espressione di controllo dell'istruzione do while funziona esclusivamente con un AND?
Ragionando sulla condizione questa non dovrebbe essere del tipo "finquando il carattere digitato non e' uguale a f o c riproponi l'input?".
Se cosi fosse perche' non puo' essere codificata con un OR? (loop!)
do {
cout << "Scala? (c/f): ";
cin >> ch;
} while(ch != 'f' || ch != 'c');
Chi puo' darmi delucidazioni a riguardo?