Salve ragazzi, confesso che questa discussione già l'ho trovata nel vostro forum, mi è stata d'aiuto ma non so perchè non mi trovo!
In pratica il punto è questo:
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.
ES.
INPUT:
riemp = 5
VS = 20 M
25 M
23 F
18 M
33 F
OUTPUT:
VM = 20 25 18
VF = 23 33
---------------
Io ho scritto questo:
codice:// lib.h const int maxdim=20; typedef int vettore [maxdim]; struct persona{ int eta; char sesso; }; typedef persona info[maxdim]; void leggi_struct(info, int&); void stampa_struct(const info, int); void separa( info, int, vettore, vettore, int&, int&); void stampa_vett(vettore, int, vettore, int);codice:// lib.cpp #include <cstdlib> #include <iostream> #include "lib.h" using namespace std; void leggi_struct(info vs, int&r_vs){ int i; for(i=0;i<r_vs; i++){ cout<<"Inserire l'eta' : "; cin>>vs[i].eta; cout<<"Ora inserire il sesso: "; cin>>vs[i].sesso; } } void stampa_struct(const info vs, int r_vs){ int i; cout<<"\nStampa della struttura inserita: \n"; for(i=0;i<r_vs;i++){ cout<<vs[i].eta<<' '<<vs[i].sesso<<'\n'; cout<<"\n"; } } void separa(info vs, int r_vs, vettore vm, vettore vf, int&r_vm, int&r_vf){ int i,j; r_vm=0; r_vf=0; for(i=0;i<r_vs;i++){ if(vs[i].sesso =='m' || vs[i].sesso=='M'){ vm[r_vm]=vs[i].eta; r_vm++; } else{ if(vs[i].sesso =='f' || vs[i].sesso=='F'){ vm[r_vf]=vs[i].eta; r_vf++; } } } } void stampa_vett(vettore vm, int r_vm, vettore vf, int r_vf){ int i,j; if(r_vm==0 || r_vf==0) cout<<"\nUno dei due vettori e' vuoto, non ha elementi...\n"; cout<<"\nGli elementi del vettore vm sono: \n"; for(i=0;i<r_vm;i++) cout<<vm[r_vm]<<' '; cout<<"\nGli elementi del vettore vf sono: \n"; for(j=0;j<r_vf;j++) cout<<vf[r_vf]<<' '; cout<<"\n\n"; }Ecco invece l'output dopo aver digitato i vari valori:codice:// main.cpp #include <cstdlib> #include <iostream> #include "lib.h" using namespace std; int main() { info vs; int r_vs; vettore vm; vettore vf; int r_vm; int r_vf; cout<<"Inserire il numero di elementi da caratterizzare: "; cin>>r_vs; leggi_struct(vs, r_vs); stampa_struct(vs, r_vs); separa(vs, r_vs, vm, vf, r_vm, r_vf); stampa_vett(vm, r_vm, vf, r_vf); system("PAUSE"); return EXIT_SUCCESS; }
Penso che il problema risiedi nella funzione separa, perchè alla funzione stampa_struct i valori arrivano bene, per questo l'ho scrittacodice:Inserire il numero di elementi da caratterizzare: 3 Inserire l'eta' : 13 Ora inserire il sesso: m Inserire l'eta' : 35 Ora inserire il sesso: f Inserire l'eta' : 39 Ora inserire il sesso: m Stampa della struttura inserita: 13 m 35 f 39 m Gli elementi del vettore vm sono: 4072592 4072592 Gli elementi del vettore vf sono: -2142260006 Premere un tasto per continuare . . .
Potete aiutarmi a capire perchè escono quei valori?
Grazie in anticipo!!




Rispondi quotando
