Ragazzi, ho un listato che crea un archivio di studenti, però non riesco a capire perchè viene usato ifndef, quale sarebbe la condizione da far verificare al preprocessore?
codice:
#ifndef _STUDENTE_
#define _STUDENTE_
#include <iostream>
using namespace std;
const int size=20;
typedef struct Studente {
char nome[size];
int matricola;
int numeroEsami;
};
void crea_record(Studente &);
#endif
Questo è il file Archivio.cpp se può essere d'aiuto:
codice:
#include "Archivio.h"
Archivio crea_archivio(int & dim, int& num) {
cout << "\n Quante entry ha l'archivio?";
cin >> dim;
Archivio t=new Studente[dim];
num=0;
return t;
}
bool inserisci_record(Archivio t, int & num, const Studente s, const int n) {
bool ok=true;
if (num<n && t!=0) {
t[num]=s;
num++;
}
else ok=false;
return ok;
}
bool ricerca_record(const Archivio t, const int m, const int num, int & pos) {
bool trovato=false;
int i=0;
while(i<num && !trovato)
if(m==t[i].matricola) {
trovato=true;
pos=i;
}
else i++;
return trovato;
}
void stampa_archivio(const Archivio t, const int num){
if(t==0 || num==0) cout << "L'archivio è vuoto o non esiste";
else
for (int i=0; i<num; i++) {
cout << "\n";
cout << "\n" << i;
cout << "[" << t[i].matricola << ','<< t[i].nome << ',' << t[i].numeroEsami << "]" << endl;
}
}
void stampa_dati(const Archivio t, const int pos, const int n, const int num) {
if(pos >num || pos<0 || pos>n) cout << "\n posizione record non valida!";
else
cout << "\n [" << t[pos].matricola << ','<< t[pos].nome << ',' << t[pos].numeroEsami << "]" << endl;
}
void distruggi_archivio(Archivio & t, int & num, int & n) {
delete [] t;
t=0;
n=0;
num=0;
}
void crea_record(Studente & s){
cout << "\n ******** Inserimento dati studente ********";
cout << "\n Inserisci il numero di matricola: ";
cin >> s.matricola;
cin.ignore();
cout << "\n Inserisci nome e cognome: ";
cin.getline(s.nome,size);
cout << "\n Inserisci il numero di esami: ";
cin >> s.numeroEsami;
}
Grazie a tutti