Ragazzi ho fatto un semplice programmino sulle strutture in forma modulare. Il programma è abbastanza intuitivo quindi non sto a spiegarlo. Il problema è che compila correttamente ma quando inserisco il primo valore di chiave si chiude il programma senza capire il perchè.
Il file tabella.h è il seguente:
#ifndef TABELLA_H
#define TABELLA_H
struct Record
{
char chiave;
int valore;
};
typedef Record *Tabella;
void crea_tabella (Tabella, int);
void inserimento (Tabella, int);
void stampa (Tabella, int);
void dealloca_tabella (Tabella);
#endif
Il file Tabella.cpp è questo:
#include <iostream>
#include "Tabella.h"
using namespace std;
void crea_tabella (Tabella t, int entry)
{
t = new Record[entry];
}
void inserimento (Tabella t, int entry)
{
for (int i=0; i<entry; i++)
{
cout << "Inserisci la entry di posizione " << i << endl;
cout << "Chiave? ";
cin >> t[i].chiave;
cout << "Valore? ";
cin >> t[i].valore;
cout << endl;
}
}
void stampa (Tabella t, int entry)
{
for (int i=0; i<entry; i++)
{
cout << "Entry di posizione " << i << endl;
cout << "Chiave? " << t[i].chiave;
cout << "Valore? " << t[i].valore;
cout << endl;
}
}
void dealloca_tabella (Tabella t)
{
delete [] t;
cout << "Deallocazione della tabella riuscita\n";
}
Il main è questo:
#include <iostream>
#include <cstdlib>
#include "Tabella.h"
using namespace std;
int main ()
{
Tabella tabella;
int num_entry;
cout << "Creazione della tabella. Quante entry? ";
cin >> num_entry;
cout << endl;
crea_tabella (tabella, num_entry);
cout << "Creata una tabella con " << num_entry << " entry" << endl;
cout << "Inserimento dati nella tabella." << endl << endl;
inserimento (tabella, num_entry);
cout << endl;
stampa (tabella, num_entry);
dealloca_tabella (tabella);
cout << endl << endl;
system ("PAUSE");
return 0;
}
Grazie.