Ragazzi ho bisogno di una mano con questo programma da svolgere:
Siano assegnati da tastiera il riempimento riemp e gli elementi di un vettore VS di strutture. Ciascuna struttura ha due campi, che rappresentano rispettivamente l’età ed il sesso di una persona (si supponga di codificare il sesso con un campo di tipo carattere che può assumere come valore ‘M’ oppure ‘F’).
Si progetti un programma composto da tre funzioni:
・ una funzione LEGGI che deve leggere il riempimento e gli elementi del vettore di strutture VS
・ una funzione SEPARA che riceve in ingresso VS e riemp e restituisce come parametri di uscita due vettori di interi, VM e VF: il primo vettore dovrà contenere le età delle persone di sesso maschile ed il secondo le età delle persone di sesso femminile.
・ una funzione STAMPA che serve a stampare i vettori VM e VF. Quest'ultima funzione dovrà anche stampare un opportuno messaggio nel caso in cui uno dei due vettori sia vuoto.
・
Il programma dovrà essere suddiviso in moduli, uno contenente prototipi e dichiarazioni, uno contenente le funzioni LEGGI, SEPARA e STAMPA ed un terzo contenente il main.
Il codice da me steso è il seguente
LIB.H
<const int max=50;
struct persona
{
int eta;
char sesso;
};
typedef persona vettore_strut[max];
typedef int vettore[max];
//prototitpi
void leggi (vettore_strut,int &);
void separa (vettore_strut,int,vettore,vettore);
void stampa(vettore,vettore,int,int);
>
MAIN.CPP
<#include <iostream>
#include "lib.h"
using namespace std;
int main()
{
vettore vm,vf;
int riemp,riemp_vm,riemp_vf;
vettore_strut vs;
leggi(vs,riemp);
separa(vs,riemp,vm,vf);
stampa(vm,vf,riemp_vm,riemp_vf);
system("PAUSE");
return 0;
}>
LIB.CPP
<#include <iostream>
#include "lib.h"
using namespace std;
void leggi(vettore_strut vs, int &riemp)
{
int i;
cout<<"inserire riempimento del vettore"<<endl;
cin>>riemp;
for(i=0;i<riemp;i++)
{
cout<<"inserire età della persona"<<endl;
cin>>vs[i].eta;
cout<<"inserire sesso della persona"<<endl;
cin>>vs[i].sesso;
}
}
void separa (vettore_strut vs,int riemp,int &riemp_vm,int &riemp_vf,vettore vm,vettore vf)
{
int i;
riemp_vm=0;
riemp_vf=0;
for(i=0;i<riemp;i++)
{
if(vs[i].sesso=='m' || vs[i].sesso=='M')
{
vm[riemp_vm]=vs[i].eta;
riemp_vm++;
}
else
{
vf[riemp_vf]=vs[i].eta;
riemp_vf++;
}
}
}
void stampa(vettore vm, vettore vf, int riemp_vm, int riemp_vf)
{
int i,j;
if(riemp_vm==0 && riemp_vf==0)
cout<<"non ci sono elementi"<<endl;
cout<<"gli elementi del vettore_vm sono :"<<endl;
for(i=0;i<riemp_vm;i++)
cout<<vm[riemp_vm];
cout<<"gli elementi del vettore_vf sono :"<<endl;
for(j=0;j<riemp_vf;j++)
cout<<vf[riemp_vf];
} >
L'errore è il seguente :< [Linker error] undefined reference to `separa(persona*, int, int*, int*)' >
PS: sono alle prime armi quindi mi scuso per eventuali errori stupidi
Le parentesi angolari le ho inseritè affinchè si evidenzi il blocco di codice per ogni modulo. Se serve metterò in allegato la cartella dove c'è il codice sorgente