Programma con liste,estrazioni dalla testa e inserimento

di il
24 risposte

Programma con liste,estrazioni dalla testa e inserimento

Ho costruito un programma con liste in cui vi è l'estrazione in testa e l'inserimento in testa, il programma non mi parte ma non penso ci siano grossi errori, secondo voi dove ho sbagliato?

#include <cstdlib>
#include <iostream>
using namespace std;

struct persona
{ char nome[20];
int eta;
persona* successiva;
};

typedef persona* lista;

lista creaLista (int n)
{
lista p, p0 = 0;

for (int i = 1; i <= n; i++)
{
p = new persona;
cin >> p->nome >> p->eta;
p->successiva = p0;
p0 = p;
}
return p0;
}
bool estTesta (lista& inizio, int& persona)
{lista p = inizio;
if (p == 0) return false;
persona.nome = p->nome;
persona.eta = p->eta;

inizio = p->succ;
delete p;
returne true;
}
void insTesta (lista& inizio, int persona)
{
lista p = new elem;
p->nome = persona.nome;
p->succ = inizio;
inizio = p;
}

int main()
{
const int numero_persone = 10;
creaLista(numero_persone);
estTesta (numero_persone);
insTesta (numero-persona);
return 0;
system ("pause");
}

24 Risposte

  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Secondo te dove hai sbagliato? quali sono gli errori che il programma ti da. e non dire non parte perche c'è una ragione perche non parte e sta ragione te lo dice dev c++ nel riquadro sotto.
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Questi sono gli errrori che da a me:
    
    error C2228: left of '.nome' must have class/struct/union
    1>          type is 'int'
    error C2228: left of '.eta' must have class/struct/union
    1>          type is 'int'
    error C2039: 'succ' : is not a member of 'persona'
    see declaration of 'persona'
    error C2065: 'returne' : undeclared identifier
    error C2143: syntax error : missing ';' before 'constant'
    error C2061: syntax error : identifier 'elem'
    error C2228: left of '.nome' must have class/struct/union
    1>          type is 'int'
    error C2039: 'succ' : is not a member of 'persona'
    see declaration of 'persona'
    error C2660: 'estTesta' : function does not take 1 arguments
    error C2065: 'numero' : undeclared identifier
    error C2275: 'persona' : illegal use of this type as an expression
    see declaration of 'persona'
    error C2660: 'insTesta' : function does not take 1 arguments
    
    come intendi risolverli?
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Uno te lo dico io.
    
    return 0;
    system ("pause");
    
    system("pause"); non è mai raggiunto dal codice in quanto il programma esce prima (vedi return). Il resto lo devi trovare da te.
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Allora, a me dà errore sulla riga persona.nome = p->nome, però mi sembra correta come scrittura
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    So che dà errore ma mi sembra corretta come scrittura, non capisco perchè
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Che errore da?
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Qua mi scrive parse error,poi una cosa del tipo che persona non puo' essere convertita in int
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Persona non puo' essere convertita in int. quindi? com'è definito la funzione esttesta?
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Questo succede perchè ho scritto char nome all'inizio, però non posso scrivere int nome
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Ti riformulo la domanda: La funzione estTesta è scritta nel modo corretto secondo te. Se si stai passando le variabili in modo corretto a questa funzione?
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Allora, lì ho sbagliato a scrivere succ invece di successiva, poi per il resto ho utilizzato la lista per l'estrazione in testa, ho scritto proprio come era scritto nel libro
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    
    bool estTesta (lista& inizio, int& persona)
    {
    lista p = inizio;
    if (p == 0) return false;
    persona.nome = p->nome;
    persona.eta = p->eta;
    
    inizio = p->succ;
    delete p;
    returne true;
    }
    
    Non mi interessa cosa c'è scritto nel libro.Tu hai una varibile int chiamata persona e già qui ti devono venire dei dubbi. Come fai a chiamare una variabile col nome di una struttura. poi siccome l'hai definito come int come puo pretendre che sto int abbia i campi nome e eta. Adesso correggi i tuoi errori.
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Bool estTesta (lista& inizio, int& nome, int& eta)
    {lista p = inizio;
    if (p == 0) return false;
    persona.nome = p->nome;
    persona.eta = p->eta;

    inizio = p->successiva;
    delete p;
    returne true;
    }
    io scriverei così..
  • Re: Programma con liste,estrazioni dalla testa e inserimento

    Il mio problema è che scrivere persona.nome è sbagliato, ma non saprei come scriverlo altrimenti!
Devi accedere o registrarti per scrivere nel forum
24 risposte