PDA

View Full Version : [c++] Aiuto ragazzi esercizio


marcellinobono
06-11-2008, 17:28
Salve ragazzi ho un esercizio che devo fare in pratica dice

Per entrare in un museo i bambini fino a 10 anni pagano 4 euro, le persone ultrasessantenni pagano 5 euro, 1 euro tutti gli altri.
Scrivere un programma che, assegnata l'eta di un visitatore di quel museo, stampi quanto deve pagare per entrare

Ora io scrivo il programma ora ve lo incollo

#include<iostream>
using namespace std;

int main () {

int eta;
cout<<"dimmi l'eta \n";
cin>>eta;
if (eta<=10){
cout<<"il prezzo e' di 4 euro \n";
}
if (eta>60) {
cout<<"il prezzo e' di 5 euro \n";
}
else cout<<"il prezzo e' di 1 euro \n";

return 0;
}

ora vorrei capire perche quando metto una età inferiore ai 10 anni e superiore ai 60 anni mi stampa anche (else cout<<"il prezzo e' di 1 euro \n";), in pratica se metto come età 5 anni oltre a stamparmi 4 euro mi stampa anche 1 euro e se metto come eta 66 anni mi stampa 5 euro e anche 1 euro, come devo fare per far stampare solo il prezzo dell'eta interessata???

anyanka
06-11-2008, 18:06
perchè la posizione dell'else è ambigua... ti conviene mettere un else if per verificare età> 60 e non solo l'if

cionci
06-11-2008, 18:07
Perché ti manca un else prima di if (eta>60).

marcellinobono
06-11-2008, 18:21
ok ragazzi ora ci provo e vi faro sapere grazie siete stati troppo gentili

marcellinobono
06-11-2008, 18:24
grazie ragazzi era come avete detto voi, pero sul libro di programmazione una situazione del genere non spiegava che in caso di piu di un if al secondo if bisognava mettere else if cmq sia ora lo terro a mente grazie

cionci
06-11-2008, 18:32
grazie ragazzi era come avete detto voi, pero sul libro di programmazione una situazione del genere non spiegava che in caso di piu di un if al secondo if bisognava mettere else if cmq sia ora lo terro a mente grazie
Infatti quella è una situazione fittizia. In realtà è come se gli if fossero annidati.
In realtà quel codice è così:
if(condizione)
{
...
}
else
{
if(condizione)
{
}
else
{
...
}
}

marcellinobono
06-11-2008, 18:43
ragazzi non so ma sta sera perchè non riesco a studiare programmazione ho un'altro problema, dovrei fare la media di tre numeri ma mi da altri risultati assurdi!!! perchè?? se metto 5+5+5/3 come media mi da 11.666667!!!!!! e il risultato corretto è 5 perchèèèèè????? mi da risultati assurdi per qualsiasi numero che metto perchè?

#include<iostream>
#include<cmath>
using namespace std;

int main () {

float a,b,c, media;
cout<<"dammi 3 valori grazieeee \n\n\n";
cin>>a;
cin>>b;
cin>>c;
media = a + b + c / 3;
cout<<media<<endl<<endl;
cout<<"la media e'"<<media<<endl;
return 0;
}

cionci
06-11-2008, 18:46
Perché sbagli a calcolare la media :D
Guarda meglio ;)

javaboy
06-11-2008, 18:47
Non puoi scrivere questo:
media = a + b + c / 3;

Il compilatore lo interpreta come:
media = a + b + (c / 3);
per via della precedenza degli operatori.

Devi usare

media = (a + b + c) / 3;

marcellinobono
06-11-2008, 18:54
giusto, sta sera sto rincoglionito, e a pensare che sul libro che ho in questo momento avanti lo dice chiaro e tondo :D :D sorry non è serata per studiare