Introduzione
Traccia dell’esercizio
Scrivere un algoritmo e successivamente un programma che per risolvere il seguente problema:
Una scuola vuole effettuare una statistica sulla composizione della propria platea scolastica; in particolare vuole determinare quanti studenti sono maschi, quanti sono femmine, quanti sono maggiorenni e quanti sono minorenni.
Per fare questo l’operatore di segreteria inserisce in un programma informatico per ogni alunno i seguenti dati:
Sesso dello studente;
Età dello studente;
In particolare il risultato che il programma deve fornire è la percentuale delle femmine e dei maschi, la percentuale dei minorenni e dei maggiorenni, e le percentuali fra i minorenni di maschi e femmine.
Tutti i risultati devono essere visualizzati a video.
Svolgimento
Nella traccia è evidente che il numero degli studenti non è noto a priori e quindi deve essere calcolato. Per fare questo è possibile utilizzare un ciclo con ripetizione post – condizionale che si interrompe nel momento in cui non ci sono più studenti da inserire.
La tabella dati pertanto è:
Link sponsorizzato
Uso | Nome | Tipo | Descrizione |
Input | S | Carattere | Sesso dello studente ‘F’ Femmina, ‘M’ Maschio |
Input | Age | Intero | Età dello studente |
Input | Ris | Carattere | Risposta ‘S’ sono presenti altri studenti, ‘N’ non sono presenti altri studenti |
Lavoro | NS | Intero | Numero Studenti da calcolare |
Lavoro | NF | Intero | Numero Femmine |
Lavoro | NM | Intero | Mu,ero Maschi |
Lavoro | NL | Intero | Numero Minorenni |
Lavoro | NG | Intero | Numero Maggiorenni |
Output | PF, PM, PG. PL. PFL, PGL | Reale | Percentuale femmine, maschi, maggiorenni, minorenni, femmine minorenni, maschi minorenni |
L’algoritmo risolutivo è:
La codifica in C++ è:
#include <iostream>
using namespace std;
int main()
{
int NF=0,NM=0, NL=0, NG=0, NFL=0, NML=0;
int N=0;
float PF=0, PM=0, PL=0, PG=0, PFL=0, PML=0;
char Ris;
int Age;
char S;
do
{
cout << "\nInserisci il sesso e l'età:";
cin >> S;
cin >> Age;
if (S=='f')
NF++;
else
if (S=='m')
NM++;
if (Age<18)
NL++;
else
NG++;
if ((S=='f')&&(Age <18))
NFL++;
else
if ((S=='m')&&(Age<18))
NML++;
N++;
cout << "\n Altri dati s/n ?";
cin >> Ris;
}
while (Ris=='s');
PF =((float)NF/(float)N)*100;
PM =((float)NM/(float)N)*100;
PL =((float)NL/(float)N)*100;
PG =((float)NG/(float)N)*100;
PFL =((float)NFL/(float)NF)*100;
PF =((float)NML/(float)NM)*100;
cout << endl<<"La percentuale di studenti femmine è:"<<PF;
cout << endl<<"La percentuale di studenti maschi è:"<<PM;
cout << endl<<"La percentuale di studenti minorenni è:"<<PL;
cout << endl<<"La percentuale di studenti maggiorenni è:"<<PG;
if (NF>0)
cout << endl<<"La percentuale di studenti femmine minorenni è:"<<PFL;
if (NM>0)
cout << endl<<"La percentuale di studenti maschi minorenni è:"<<PML;
cout << endl;
return 0;
}
Annotazioni sul codice C++
Nella codifica in C++ sono state inseriti degli “if” nella valutazione delle percentuale per evitare un errore di divisione per zero nel caso in cui alcuni dei contatori hanno valore zero; infatti se ad esempio nell’inserimento non vi sono “Femmine minorenni”.
Video sulle strutture cicliche
In questa pagina sono presenti link di affiliazione che garantiscono a questo sito una piccola quota di ricavi, senza variazione del prezzo per l’acquirente.