Esercizio No. 5 Funzioni

Esercizio No. 5 Funzioni

Progettare per una società immobiliare una struttura di dati che descriva in modo adeguato le caratteristiche di un generico appartamento di abitazione civile. 
Creare un vettore di dimensione n di tale struttura. 
Scrivere una procedura di ricerca (diagramma di flusso + codice) in questo vettore per individuare tutti gli appartamenti che hanno certe caratteristiche richieste.

Per semplificare al massimo il problema pensiamo di definire un record di soli due record:


char pro[2];//campo provincia stringa di 2 soli caratteri
int loc;//campo numero di locali (intero) 
Poi pensiamo di predisporre una funzione void che stampi a video tutti i record che hanno il numero di locali cercati. Il listato finale sarà dunque il seguente:

#include<iostream>
#include<stdio.h>
using namespace std; 
const int n=10; 
struct rec{ 
     char pro[2]; 
     int loc; 
}; 
void cerca(struct rec X[n],int nloc); 
main(){ 
struct rec T[n];//dichiarazione vettore di record=struttura
int i; 
//caricamento vettore 
for(i=0;i < n;i++){ 
     cout << “pro:”; 
     fflush(stdin); 
     gets(T[i].pro); 
     cout << “loc:”;cin >> T[i].loc; 
//stampa del vettore per verificarne la memorizzazionefor(i=0;i < n;i++)cout << T[i].pro << ” ” << T[i].loc << endl; 
//richiesta del numero dei locali 
cout << “\n no.loc.:”;cin >> i; 
cerca(T,i);//invocazione della funzione 
}//fine main 
void cerca(struct rec X[n],int nloc){ 
int i; for(i=0;i < n;i++) 
if(X[i].loc==nloc)cout << X[i].pro << ” ” << X[i].loc << endl;
}//fine cerca 

Notiamo che in questo caso oltre alla costante n, anche la definizione del record deve essere dichiarato globalmente: se fosse dichiarato solo localmente almain()la funzione cerca() non saprebbe di quali campi è costituito il record rec
Durante il caricamento del vettore la stringa 
T[i].pro viene acquisita tramite l’istruzione gets()preceduta da fflush(stdin) (svuotamento buffer tastiera) ;operazioni standard per l’acquisizione di stringhe. 
La variabile i esaurito il suo ruolo di contatore dei cicli for viene usata per passare il numero di locali cercati alla funzione 
cerca().Di seguito lo schema a blocchi della funzione:

Commento all'articolo