Newsgroup: it.comp.os.linux.development
Titolo: Pila ad oggetti in g++

Salve ragazzi è da poco che ho cominciato lo studio della programmazione ad
oggetti in C++, quindi scusate la banalità delle mie domande.Devo fare un
programma che riempa una pila, usando le sole 4 funzioni che le strutture a
pila, ci consentono di usare, ovvero, una per controllare se la pila è
vuota, due per restituire l'elemento in cima alla pila, tre per costruire
la pila, quattro per levare il primo elemento della pila. Per essere più
ordinato ho diviso il programma in pila.h dove sono le intestazioni della
classe e dei suoi metodi, pila.cpp dove ci sono le operazioni che devono
svolgere i vari metodi e main.cpp dove c'è il main del programma. Il tutto
quando viene mandato in compilazione da un pò di errori, premetto che
programmo sotto linux usando come compilatore g++, spero che qualcuno vorrà
aiutarmi a capire gli errori che ci sono, grazie a tutti ;-)
#ifndef __PILA__
#define __PILA__
#include<iostream>
using namespace std;
struct nodo
{
        int dato;
        struct nodo* next;
};
typedef struct nodo NODO;
class pila
{
        public:
        pila();
        ~pila();
        int empty();
        int top;
        NODO* push(int);
        NODO* pop();
        void mostra();
        private:
        NODO* head;
};
#endif
#include "pila.h"
        pila::pila(NODO* head)
        {
                head=NULL;
        }
        pila::~pila(NODO* head)
        {
                NODO* aux=NULL;
                aux=head;
                while(aux)
                {
                        head=head->next;
                        delete (aux);
                        aux=head;
                }
        }
        int pila::empty(NODO* head)
        {
                return (head==0);
        }
        NODO* pila::push(int d)
        {
                NODO* aux;
                aux=new(NODO);
                aux->dato=d;
                aux->next=head;
                head=aux;
        }
        NODO* pila::pop(NODO* head)
        {
                NODO* aux=head;
                head=head->next;
                delete(aux);
                return head;
        }
        void pila::mostra(NODO* head)
        {
                while(head)
                {
                        cout << head->dato << " ";
                        head=head->next;
                }
                cout << endl;
        }
#include "pila.h"
int main()
{
        NODO* head=NULL;
        int temp;
        pila pila1;
        temp=pila1.empty(head);
        if (temp)
                cout<< "La pila  è vuota" <<endl;
        else
                cout<< "La pila non è vuota" <<endl;
        for(int i=1;i<=10;i++)
                head=pila1.push(10*i);
        pila1.mostra(head);
        cout<< "Primo elemento" << pila1.top(head) <<endl;
        head=pila1.pop(head);
        pila1.mostra(head);
        head=pila1.push(head,17);
        pila1.mostra(head);
        return 0;
}
--
Icq #84624356

Allora, ti ho corretto gli errori *sintattici* ma non quelli semantici
che, credimi, sono quelli che abbondano di più.
Come risolvere il problema? Un bel manuale di C++, tanta pazienza ed
evitare di chiamare programmazione ad oggetti quella che alla lontana
forse
è programmazione strutturale: non basta scrivere un programma in C++ per
programmare ad oggetti.
Buono studio, e la prossima volta posta anche gli errori!
Ciau
-------------------------------------------------------------
#ifndef __PILA__
#define __PILA__
#include<iostream>
using namespace std;
struct nodo
{
        int dato;
        struct nodo* next;
};
typedef struct nodo NODO;
class pila
{
        public:
        pila();
        ~pila();
        int empty();
        int top;
        NODO* push(int);
        NODO* pop();
        void mostra();
        private:
        NODO* head;
};
#endif
#include "pila.h"
pila::pila()
{
	head=NULL;
}
pila::~pila()
{
	NODO* aux=NULL;
    aux=head;
    while(aux)
    {
		head=head->next;
        delete (aux);
        aux=head;
	}
}
int pila::empty()
{
	return (head==0);
}
NODO* pila::push(int d)
{
	NODO* aux;
    aux=new(NODO);
    aux->dato=d;
    aux->next=head;
    head=aux;
}
NODO* pila::pop()
{
	NODO* aux=head;
    head=head->next;
    delete(aux);
    return head;
}
void pila::mostra()
{
	while(head)
    {
		cout << head->dato << " ";
		head=head->next;
	}
	cout << endl;
}
#include "pila.h"
int main()
{
        NODO* head=NULL;
        int temp;
        pila pila1;
        temp=pila1.empty();
        if (temp)
                cout<< "La pila  è vuota" <<endl;
        else
                cout<< "La pila non è vuota" <<endl;
        for(int i=1;i<=10;i++)
                head=pila1.push(10*i);
        pila1.mostra();
        cout<< "Primo elemento" << pila1.top <<endl;
        head=pila1.pop();
        pila1.mostra();
        head=pila1.push(17);
        pila1.mostra();
        return 0;
}
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG