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