PDA

View Full Version : [C++] programma scolastico, help me please


imesh
03-12-2008, 12:23
salve, ho da creare un programma per la scuola in c++ con le classi e lo switch. ho creato il programma, compilato, non mi da errori il compilatore però non funziona... parte ma quando devo fare la scelta con lo switch non mi fa nulla, lampeggia solo il cursore, aiuto perfavore =(

questo è il programma:

#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
int s, t;
int scelta, errore;
char r;
class operazioni
{
public:
int valori[3];

int i;

int inserisci_valori()
{
for(i=0;i<3;i++)
{
cout<<"inserire il"<<i+1<<"mo valore"<<endl;
cin >> valori[i];
}
cout<<"Vuoi tornare al menu\'? [s] [n]";
cin>>r;

}

int somma()
{
i=0;
for(i=0;i<3;i++)
{
s=s+valori[i];
}
cout<<"Vuoi tornare al menu\'? [s] [n]";
cin>>r;
}

int stampa()
{
i=0;

do
{
cout<<"il"<<i+1<<"mo valore e\'"<<valori[i]<<endl;
i++;
}
while(i<3);

cout<<"la somma e\'"<<s<<endl;


cout<<"Vuoi tornare al menu\'? [s] [n]";
cin>>r;
}

};



int main()
{
scelta=0;
errore=0;

cout<<"+***********menu\'*************+"<<endl;
cout<<"| scegliere l'operazione |"<<endl;
cout<<"|-inserimento valori[1] |"<<endl;
cout<<"|-somma[2] |"<<endl;
cout<<"|-stampa[3] |"<<endl;
cout<<"+*****************************+"<<endl;
operazioni operazioni;
do {

cout <<"inserire la propria scelta"<<endl;
cin>>scelta;

while(scelta>0 && scelta<4);
{
switch(scelta)

{

case 1:
{
operazioni.inserisci_valori();
break;
}

case 2:

operazioni.somma();
break;

case 3:

operazioni.stampa();
break;
default:
{cout<<"\a\nERRORE: La scelta da lei selezionata e/' errata...";
}
}

}

}
while(r!='n');

system("pause");

}

ndakota
03-12-2008, 12:47
metti il codice tra tag code o nessuno avrà voglia di leggerlo ;)

imesh
03-12-2008, 12:51
ehm... e come si fa? =D

il_toby
03-12-2008, 13:15
il problema sta qui,
while(scelta>0 && scelta<4);
togli il ; e vedi che dopo va, e poi un consiglio, i metodi della classe dichiarali come void visto che non ritorni niente

..::DAVE::..
03-12-2008, 13:16
allora ad occhio:
cin>>scelta;

nell int mette il codice ascii del numero e non il numero stesso. cioè '0' anzichè 0
per ottenere il numero basta fare scelta-='0' [rischiosissimo senza controllo dell'input]

sottovento
03-12-2008, 13:20
Quanto meno vedrai apparire il menu, giusto?

Per prima cosa, ti consiglierei di mettere il menu all'interno del ciclo, cosi' da visualizzarlo ogni volta che si seleziona un'opzione. Cosi' com'e' ora, lo vedrai solo una volta, e basta.

Poi i due cicli innestati sono da verificare. Visto quello che vuoi fare, te ne dovrebbe servire solo uno, ma... con la condizione giusta :D

Inoltre, cerca di NON usare le variabili globali che per questo programma non ti servono. Male che vada, le puoi far diventare membri della classe, ma il consiglio e' di evitare comunque questa strada. E non chiamare delle globali "r", "t", ....

cionci
03-12-2008, 13:28
allora ad occhio:
cin>>scelta;

nell int mette il codice ascii del numero e non il numero stesso. cioè '0' anzichè 0
per ottenere il numero basta fare scelta-='0' [rischiosissimo senza controllo dell'input]
No, legge un int. Il problema è come scritto sopra il punto e virgola dopo il while.

imesh
03-12-2008, 15:54
grazie mille, mi era proprio sfuggito quel punto e virgola, che figuraccia ahaha:muro: :muro:

sottovento
03-12-2008, 16:42
Scusa, ma come fai poi ad uscire dal cicle

while(scelta>0 && scelta<4)


visto che piu' nessuno modifica scelta?

imesh
03-12-2008, 17:23
non è completo quel codice, ho levato le parti che non mi interessavano per l'errore, se no veniva troppo lungo