Salve a tutti,sono nuovo nel forum e vorrei chiedere il vostro aiuto nella risoluzione di un esercizio, in realtà l'ho risolto tutto, solo che non funziona come dovrebbe...la traccia è questa:
Si scriva un programma che definisca e utilizzi la struttura dati piii adatta per gestire un elenco di cartelle mediche, in cui il generico elemento deve contenere le seguenti informazioni:
numero di codice del paziente (valore di tipo intero)
cognome del paziente
nome del paziente
reparto di appartenenza ("oculistica", "pediatria", "ortopedia", "medicina")
Il programma deve prevedere inizialmente la lettura dell'elenco con tutti i dati per un numero N di pazienti specificato dall'utente. Al termine, il programma deve ordinare l'elenco per numero di codice crescente e stampare l'elenco cosi ordinato; deve quindi prevedere la lettura dei dati di K pazienti (con K sempre specificato dall'utente) che andranno inseriti via via che sono inseriti in ingresso, assicurando che si mantenga l'ordinamento dell'elenco. Il programma deve infine stampare l'elenco complessivo, fornendo in output le iniziali del cognome e del nome del paziente, il numero di codice ed il reparto.
ecco il codice:
header file:
funzioni:codice:#ifndef STRUTTURA_H #define STRUTTURA_H struct elenco{ int num; char cognome[100]; char nome[100]; char reparto[100]; }; #endif
nel main:codice:#include <cstdlib> #include <iostream> #include <cstring> #include "struttura.h" using namespace std; void inserimento(elenco n1[],int n){ for(int i=0;i<n;i++){ cout<<"Elenco N."<<i+1<<endl; cout<<"Numero del paziente: ";cin>>n1[i].num; cout<<"Cognome: ";cin.ignore();cin.getline(n1[i].cognome,100); cout<<"Nome: ";cin.getline(n1[i].nome,100); cout<<"Reparto: ";cin.getline(n1[i].reparto,100); cout<<endl; } } void stampa(elenco n1[],int n){ for(int i=0;i<n;i++){ cout<<"Elenco N."<<i+1<<endl; cout<<endl<<"Numero del paziente: "<<n1[i].num; cout<<endl<<"Cognome: "<<n1[i].cognome; cout<<endl<<"Nome: "<<n1[i].nome; cout<<endl<<"Reparto: "<<n1[i].reparto<<endl; } } void ordina(elenco n1[], int n){ int min, posmin; for (int i=0; i<n-1; i++){ min=n1[i].num; posmin=i; for (int k=i+1; k<n; k++){ if (n1[k].num<min){ min=n1[k].num; posmin=k; if (posmin!=i) swap(n1[i].num,n1[posmin].num);}}}} void inserimento2(elenco n2){ cout<<"numero: "; cin>>n2.num; cout<<"cognome: ";cin>>n2.cognome; cout<<"nome: ";cin>>n2.nome; cout<<"reparto: ";cin>>n2.reparto; } void ordina2(elenco n1[],int n, elenco n2){ for(int i=0; i<n; i++){ if (n2.num>n1[i].num && n2.num<n1[i+1].num){ for (int k=i+1; k<n; k++){ n1[k+1]=n1[k]; n1[i]=n2;} } } if (n2.num<=n1[0].num){ for (int k=0; k<n; k++) n1[k+1]=n1[k]; n1[0]=n2;} else if (n2.num>=n1[n].num) n1[n+1]=n2; return; } void stampa2(elenco n1[],int n){ for(int i=0;i<n;i++){ cout<<"Elenco N."<<i+1<<endl; cout<<endl<<"Numero del paziente: "<<n1[i].num; cout<<endl<<"Cognome: "<<n1[i].cognome[0]; cout<<endl<<"Nome: "<<n1[i].nome[0]; cout<<endl<<"Reparto: "<<n1[i].reparto<<endl;}}
codice:int main(int argc, char** argv) { elenco *n1; elenco n2; int n,k; cout<<"Inserire numero pazienti: ";cin>>n; cout<<"Inserire nuovo elenco pazienti: ";cin>>k; n1=new elenco[n+k]; inserimento(n1,n); ordina(n1,n); stampa(n1,n); for(int i=0;i<k;i++){ cout<<"paziente N."<<i+1<<endl; inserimento2(n2); ordina(n1,n);} stampa2(n1,n+k); return 0; }

Rispondi quotando