PDA

View Full Version : [C++] vettori di strutture


uscrocc
13-05-2014, 22:00
Eseguendo questo programma:

/* realizzare un sw che consenta di archiviare le informazioni inerenti automobili, tra cui:
-marca
-modello
-cilindrata (cc)
-alimentazione(gasolio, benzina)
-prezzo
- n° porte
- cv
-peso (kg)

il tutto va gestito con un menu' che consente di richiamare le seguenti funzioni:
0- Esci
1- Inserisci auto
2- Ricerca per marca
3- Prezzo compreso tra ... e ...
4- Ricerca auto per neopatentati ( se peso/cv >10)
*/
#include <string.h>
#include <iostream>
using namespace std;
struct automobili {
char marca [20];
char modello [20];
int cilindrata;
char alimentazione[20];
int prezzo;
int nPorte;
int cv;
int peso;
};
void stampaAuto (automobili a);
int main()
{
int scelta, numero;
automobili vet [100];

do{
cout<<"Menu' del programma"<<endl;
cout<<"0- Esci"<<endl;
cout<<"1- Inserisci dati automobile/i"<<endl;
cout<<"2- Ricerca per marca"<<endl;
cout<<"3- Ricerca prezzo compreso tra ... e ... "<<endl;
cout<<"4- Ricerca auto per neopatentati "<<endl;
cout<<"Inserisci la scelta:"<<endl;
cin>>scelta;

if (scelta==1) {
cout<<"Quante automobili vuoi inserire?" << endl;
cin>>numero;
for (int i=0; i<numero; i++){
cout<<" Inserisci marca: ";
cin>>vet[i].marca;
cout<<" Inserisci modello: ";
cin>>vet[i].modello;
cout<<" Inserisci cilindrata (cc): ";
cin>>vet[i].cilindrata;
cout<<" Inserisci alimentazione: ";
cin>>vet[i].alimentazione;
cout<<" Inserisci prezzo: ";
cin>>vet[i].prezzo;
cout<<" Inserisci numero porte: ";
cin>>vet[i].nPorte;
cout<<" Inserisci quanti cv: ";
cin>>vet[i].cv;
cout<<" Inserisci il peso (kg): ";
cin>>vet[i].peso;
}
}

else if (scelta==2){
char marc[20];
cout<<"Inserisci la marca da ricercare: ";
cin>>marc;
for (int i=0; i<numero; i++)
{
if(strcmp(vet[i].marca, marc)==0) stampaAuto(vet[i]);
}
}
else if (scelta==3){
int num1, num2;
char risposta [1];
cout<<"Il prezzo che deve essere ricercato deve essere compreso tra: "<<endl;
cin>>num1;
cout<<"Tra "<<num1<<" e: "<<endl;
cin>>num2;
cout<<"Quindi il prezzo da ricercare è tra "<<num1<<" e "<<num2<<" ? Risposta (Y/N)"<<endl;
cin>>risposta;
if (risposta=="Y" || "y") {
for (int i=0; i<numero;i++)
{
if ((vet[i].prezzo>num1) && (vet[i].prezzo<num2)) stampaAuto(vet[i]);
}
}

else if(scelta==4){
for (int i=0; i<numero; i++){
if ((vet[i].peso/vet[i].cv)>10) {
cout<<"E' presente l'auto per neopatentati"<<endl;
stampaAuto(vet[i]);
}
else cout<<"Non e' presente un auto per neopatentati"<<endl;
}
}

}


}while (scelta!=0);

system ("PAUSE");
return 0;
}
void stampaAuto (automobili a){
cout<<a.marca<<"\t";
cout<<a.modello<<"\t";
cout<<a.cilindrata<<"\t";
cout<<a.alimentazione<<"\t";
cout<<a.prezzo<<"\t";
cout<<a.nPorte<<"\t";
cout<<a.cv<<"\t";
cout<<a.peso<<endl;

}


Non mi funziona il punto 4, come se nemmeno entrasse nel ciclo..

vendettaaaaa
13-05-2014, 23:16
Guarda bene l'indentazione, dopo aver usato un editor di testo che la sistema:
else if (scelta==3){
int num1, num2;
char risposta [1];
cout<<"Il prezzo che deve essere ricercato deve essere compreso tra: "<<endl;
cin>>num1;
cout<<"Tra "<<num1<<" e: "<<endl;
cin>>num2;
cout<<"Quindi il prezzo da ricercare è tra "<<num1<<" e "<<num2<<" ? Risposta (Y/N)"<<endl;
cin>>risposta;
if (risposta=="Y" || "y") {
for (int i=0; i<numero;i++)
{
if ((vet[i].prezzo>num1) && (vet[i].prezzo<num2)) stampaAuto(vet[i]);
}
}

else if(scelta==4){
for (int i=0; i<numero; i++){
if ((vet[i].peso/vet[i].cv)>10) {
cout<<"E' presente l'auto per neopatentati"<<endl;
stampaAuto(vet[i]);
}
else cout<<"Non e' presente un auto per neopatentati"<<endl;
}
}

}

uscrocc
20-05-2014, 13:35
Guarda bene l'indentazione, dopo aver usato un editor di testo che la sistema:
else if (scelta==3){
int num1, num2;
char risposta [1];
cout<<"Il prezzo che deve essere ricercato deve essere compreso tra: "<<endl;
cin>>num1;
cout<<"Tra "<<num1<<" e: "<<endl;
cin>>num2;
cout<<"Quindi il prezzo da ricercare è tra "<<num1<<" e "<<num2<<" ? Risposta (Y/N)"<<endl;
cin>>risposta;
if (risposta=="Y" || "y") {
for (int i=0; i<numero;i++)
{
if ((vet[i].prezzo>num1) && (vet[i].prezzo<num2)) stampaAuto(vet[i]);
}
}

else if(scelta==4){
for (int i=0; i<numero; i++){
if ((vet[i].peso/vet[i].cv)>10) {
cout<<"E' presente l'auto per neopatentati"<<endl;
stampaAuto(vet[i]);
}
else cout<<"Non e' presente un auto per neopatentati"<<endl;
}
}

}


grazie