Salve ragazzi ho scritto il seguente programmino in C++, praticamente inserisco dei valori in una struttura e dopo devo stampare il record che ha il campo "importo" minore di tutti gli altri.
ecco il codice:
codice:
#include<iostream>
using namespace std;
typedef char *String;
typedef struct
{
unsigned int id_cliente;
String nomeFornitore;
double importo;
}offerta;
void insert_offerta(offerta *elenco, int n, int i);
void bestoffert(offerta *elenco, int n);
int main()
{
offerta *elenco;
int n, i;
cout<<"Inserisci il numero delle offerte:"<<endl;
cin>>n;
elenco=new offerta[n];
insert_offerta(elenco, n, 0);
bestoffert(elenco, n);
}
void insert_offerta(offerta *elenco, int n, int i){
/* SCOPO:
* Mi permette di inserire ricorsivamente
* le offerte nella struttura dati dinamica
*/
if(i==n){
cout<<"L'elenco è pieno!"<<endl;
} else {
cout<<"Inserisci l'id del fornitore: "<<endl;
cin>>elenco[i].id_cliente;
cout<<"Inserisci il nome del fornitore: "<<endl;
cin>>elenco[i].nomeFornitore;
cout<<"Inserisci l'importo: "<<endl;
cin>>elenco[i].importo;
insert_offerta(elenco, n, i+1);
}
}
void bestoffert(offerta *elenco, int n){
int j, p;
double min;
min=elenco[0].importo;
/* SCOPO:
* Mi trova l'offeta minimia presente
* nell'elenco
*/
for (j=1; j<n; j++){
if(min > elenco[j].importo){
min=elenco[j].importo;
p=j;
}
}
cout<<"AZIENDA CON OFFERTA MIGLIORE: "<<endl;
cout<<"ID cliente: " <<elenco[p].id_cliente;
cout<<"Nome fornitore: "<<elenco[p].nomeFornitore;
cout<<"Importo migliore: "<<elenco[p].importo;
}
Funziona tutto, solo che una volta inserito il "Nome fornitore", mi esce: "Errore di segmentazione"...