Lego86 (Member)
Rookie
Messaggi: 30
Iscritto: 04/10/2008
|
Ciao a tutti!
Ho scritto un programma che carica una lista con dei nomi e delle età. Il programma dovrebbe stampare l'elemento con età maggiore, ma quando provo a stampare a video o a fare il controllo dell'età sui singoli nodi mi dà un errore di memoria.. potreste darmi una mano?
Grazie mille,
Roberto
main.cpp
Codice sorgente - presumibilmente C++ |
#include <cstdlib> #include <iostream> #include "header.h" using namespace std; int main(int argc, char *argv[]) { pNodo testa; inizializzaLista(); testa=inserisciInLista(testa); stampaLista(testa); trovaMassimo(testa); system("PAUSE"); return EXIT_SUCCESS; }
|
header.h
Codice sorgente - presumibilmente C++ |
#ifndef ESAMELISTA_H #define ESAMELISTA_H #define N 100 typedef char stringa[N]; typedef struct nodo *pNodo; typedef struct nodo{ stringa nome; int eta; pNodo next; }; pNodo inizializzaLista(); pNodo push(pNodo,stringa,int); pNodo inserisciInLista(pNodo); void trovaMassimo(pNodo); void stampaLista(pNodo); #endif
|
header.cpp
Codice sorgente - presumibilmente C++ |
#include <iostream> #include "header.h" using namespace std; pNodo inizializzaLista(){ pNodo p=new nodo; p=0; return p; } pNodo push(pNodo testa,stringa name,int age){ pNodo p=new nodo; strcpy(p->nome,name); p->eta=age; p->next=testa; return p; } pNodo inserisciInLista(pNodo testa){ stringa name; int n,age; cout<<"Quante persone vuoi inserire nella lista?"<<endl; cin>>n; for(int i=0;i<n;i++){ cout<<"Inserici nome "<<i+1<<": "; cin>>name; cout<<"Inserici eta "<<i+1<<": "; cin>>age; testa=push(testa,name,age); } return testa; } void trovaMassimo(pNodo testa){ int maxEta=0; string maxNome; while(testa!=0){ int listAge=testa->eta; if(maxEta<(listAge)){ maxEta=testa->eta; maxNome=testa->nome; } testa=testa->next; } cout<<"La persona piu' grande e' "<<maxNome<<" di anni "<<maxEta<<endl; } void stampaLista(pNodo testa){ cout<<"La lista e':"<<endl; while(testa!=0){ cout<<testa->nome<<endl; cout<<testa->eta<<endl; testa=testa->next; } }
|
|