PDA

Visualizza versione completa : Riempimento lista


GiulioCesare
02-12-2003, 18.12.27
Salve ragazzi, scusate per la banalità della domanda, ma sono ancora poco
esperto di programmazione, devo fare un programma in C++. Ho uno struttura di due campi, un campo
intero e un campo puntatore, devo fare prima il riempimento di questa
lista, leggendo il numero x che immette mano mano l'utente, fino a quando
viene immesso il valore 0, a quel punto fare la media di tutti i numeri.
Prima di tutto come faccio a creare una lista che ogni volta che viene
immesso un valore crei automaticamente una nuova struttura, senza che debba
ogni volta io dirgli di leggere il numero x?:eek:

quipo.it
02-12-2003, 22.45.09
ti conviene usare i contenitori della STL, in particolare "List" (#include <list.h>), che ha funzioni come push_back(), push_front(), quindi tutto quel che devi fare è creare una nuova lista di interi:
list<int> lista;

e poi con una funzione che legge l'input aggiungi un nuovo numero alla lista:
lista.push_front(x);

voilà...

GiulioCesare
02-12-2003, 23.01.35
Purtroppo non posso farlo(volontà del prof:eek: ) devo fare tutto manualmente passo per passo, senza l'aiuto di funzioni già pronte, io ho provato a fare una cosa del genere, ma da un segmentation fault in esecuzione :(
#include <iostream>
using namespace std;

struct nodo
{
int dato;
struct nodo *next;
};
struct nodo *testa=0;
struct nodo *r=0;
struct nodo *q=0;

int main ()
{
int x,somma;

cout<<"Inserire numero" <<endl;
cin>>x;
testa=new (struct nodo);
testa -> dato=x;
testa -> next=0;

cout<<"Inserire numero" <<endl;
cin>>x;
r=new (struct nodo);
testa -> next=r;
r -> next=0;
r -> dato=x;

cout<<"Inserire numero" <<endl;
cin>>x;
q=new (struct nodo);
r -> next=q;
q -> next=0;
q -> dato=x;

while (x!=0)
{
cout<<"Inserire numero" <<endl;
cin>>x;
q=q -> next;
q->dato=x;
q->next=0;
}
somma=0;
somma=somma + testa -> dato;
while (r -> next!=0)
{
somma=somma + r -> dato;
r=r -> next;
}

cout<<"La somma è" <<endl;
cout<<somma <<endl;
return 0;
}

quipo.it
02-12-2003, 23.13.21
ma perché scrivi 50 volte lo stesso pezzo di codice? Fai una funzione...

bool flag = true;
while (flag) {
cout<<"Inserire numero" <<endl;
cin>>x;
if (x == 0) {
flag = false;
} else {
add_to_list(x);
}
}


e poi crei una funzione per gestire l'inserimento nella lista...