Vettore ed etÃ
PROBLEMA
Caricare un vettore che contiene l'età di un gruppo di persone. Il caricamento avviene in modo casuale con un range tra 1 e 99. Da tastiera verrà inserito invece il numero delle persone N. Visualizzare le età delle persone maggiorenni e la loro posizione.
TABELLA DATI
IDENTIFICATORE | DESCRIZIONE |
---|---|
numero_di_persone | Numero di persone di tipo intero variabile |
eta_massima | Età massima di tipo intero variabile |
eta_minima | Età minima di tipo intero variabile |
i | Indice di tipo intero variabile |
persone_maggiorenni | Quantità di persone maggiorenni di tipo intero variabile |
persone_minorenni | Quantità di persone minorenni di tipo intero variabile |
persone_escluse | Quantità di persone escluse di tipo intero variabile |
scelta | Preferenza del menu di tipo intero variabile |
eta_da_escludere[5] | Vettore con età da escludere di tipo intero variabile |
vettore_persone_totali[numero_di_persone] | Vettore con il totale delle persone di tipo intero variabile |
vettore_persone_maggiorenni[numero_di_persone] | Vettore con l’età delle persone maggiorenni di tipo intero variabile |
vettore_posizione_persone_maggiorenni[numero_di_persone] | Vettore con posizione delle persone maggiorenni di tipo intero variabile |
vettore_persone_minorenni[numero_di_persone] | Vettore con l’età delle persone minorenni di tipo intero variabile |
vettore_posizione_persone_minorenni[numero_di_persone] | Vettore con posizione delle persone minorenni di tipo intero variabile |
vettore_persone_escluse[numero_di_persone] | Vettore con l’età delle persone escluse di tipo intero variabile |
vettore_posizione_persone_escluse[numero_di_persone] | Vettore con posizione delle persone escluse di tipo intero variabile |
DIAGRAMMA A BLOCCHI
Clicca qui per visualizzare il Diagramma a blocchi.
CODICE SORGENTE
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
void menu();
int input_numero_di_persone();
int input_eta_massima();
int input_eta_minima();
void menu_1();
void menu_1_1();
void menu_1_2();
int input_eta_da_escludere();
void secondo_menu();
void menu_2();
void output_impostazioni_menu();
void output_persone_totali_menu();
void caricamento_vettore_persone_totali();
int caricamento_vettore_persone_maggiorenni();
int caricamento_vettore_persone_minorenni();
int caricamento_vettore_persone_escluse();
void output_persone_maggiorenni_menu();
void output_persone_minorenni_menu();
void output_persone_escluse_menu();
void banner_time();
void banner_grazie();
int main(int argc, char *argv[]) {
int numero_di_persone=0, eta_massima=99, eta_minima=1, i, persone_maggiorenni=0, persone_minorenni=0, persone_escluse=0;
int eta_da_escludere[5]={0,0,0,0,0};
enum {
numero_persone_menu=1,
range_di_eta_menu,
eta_da_escludere_menu,
conferma,
};
enum {
eta_massima_menu=1,
eta_minima_menu,
indietro_menu_1_1
};
enum {
eta_da_escudere_1_menu=1,
eta_da_escudere_2_menu,
eta_da_escudere_3_menu,
eta_da_escudere_4_menu,
eta_da_escudere_5_menu,
indietro_menu_1_2
};
enum {
impostazioni_menu=1,
persone_totali_menu,
persone_maggiorenni_menu,
persone_minorenni_menu,
persone_escuse_menu,
uscita_menu_2
};
int scelta;
do {
menu_1(numero_di_persone, eta_massima, eta_minima, eta_da_escludere);
scanf("%i", &scelta);
switch (scelta) {
case numero_persone_menu:
numero_di_persone=input_numero_di_persone();
break;
case range_di_eta_menu:
do {
do {
menu_1_1();
scanf("%i", &scelta);
switch (scelta) {
case eta_massima_menu:
eta_massima=input_eta_massima();
break;
case eta_minima_menu:
eta_minima=input_eta_minima();
break;
case indietro_menu_1_1:
break;
default:
scelta=1;
break;
}
} while((scelta>=1) && (scelta<=2));
}while(eta_minima>=eta_massima);
break;
case eta_da_escludere_menu:
do {
menu_1_2(eta_da_escludere);
scanf("%i", &scelta);
switch (scelta) {
case eta_da_escudere_1_menu:
eta_da_escludere[0]=input_eta_da_escludere(eta_da_escludere);
break;
case eta_da_escudere_2_menu:
eta_da_escludere[1]=input_eta_da_escludere(eta_da_escludere);
break;
case eta_da_escudere_3_menu:
eta_da_escludere[2]=input_eta_da_escludere(eta_da_escludere);
break;
case eta_da_escudere_4_menu:
eta_da_escludere[3]=input_eta_da_escludere(eta_da_escludere);
break;
case eta_da_escudere_5_menu:
eta_da_escludere[4]=input_eta_da_escludere(eta_da_escludere);
break;
case indietro_menu_1_2:
break;
default:
scelta=1;
break;
}
} while((scelta>=1) && (scelta<=5));
scelta=1;
break;
break;
case conferma:
if (numero_di_persone==0) scelta=1;
break;
default:
scelta=1;
break;
}
}while((scelta>=1) && (scelta<=3));
int vettore_persone_totali[numero_di_persone];
int vettore_persone_maggiorenni[numero_di_persone];
int vettore_posizione_persone_maggiorenni[numero_di_persone];
int vettore_persone_minorenni[numero_di_persone];
int vettore_posizione_persone_minorenni[numero_di_persone];
int vettore_persone_escluse[numero_di_persone];
int vettore_posizione_persone_escluse[numero_di_persone];
caricamento_vettore_persone_totali(numero_di_persone, vettore_persone_totali, eta_massima, eta_minima);
persone_maggiorenni=caricamento_vettore_persone_maggiorenni(numero_di_persone, vettore_persone_totali, vettore_persone_maggiorenni, vettore_posizione_persone_maggiorenni);
persone_minorenni=caricamento_vettore_persone_minorenni(numero_di_persone, vettore_persone_totali, vettore_persone_minorenni, vettore_posizione_persone_minorenni);
persone_escluse=caricamento_vettore_persone_escluse(numero_di_persone, vettore_persone_totali, vettore_persone_escluse, vettore_posizione_persone_escluse, eta_da_escludere);
do {
menu_2();
scanf("%i", &scelta);
switch (scelta) {
case impostazioni_menu:
output_impostazioni_menu(numero_di_persone, eta_massima, eta_minima, eta_da_escludere);
break;
case persone_totali_menu:
output_persone_totali_menu(vettore_persone_totali, numero_di_persone, eta_da_escludere);
break;
case persone_maggiorenni_menu:
output_persone_maggiorenni_menu(vettore_posizione_persone_maggiorenni, vettore_persone_maggiorenni, persone_maggiorenni);
break;
case persone_minorenni_menu:
output_persone_minorenni_menu(vettore_posizione_persone_minorenni, vettore_persone_minorenni, persone_minorenni);
break;
case persone_escuse_menu:
output_persone_escluse_menu(vettore_posizione_persone_escluse, vettore_persone_escluse, persone_escluse);
break;
case uscita_menu_2:
break;
default:
scelta=1;
break;
}
} while((scelta>=1) && (scelta<=5));
banner_grazie();
system("PAUSE");
return 0;
}
void menu_1(int numero_di_persone, int eta_massima, int eta_minima, int eta_da_escludere[]) {
system("cls");
banner_time();
printf("[!] Bisogna inserire il numero di persone prima di confermare\n");
printf("[!] L'eta massima e impostata su 99\n");
printf("--------------------------------------------------------------\n");
printf("1.Numero di persone [%i]\n", numero_di_persone);
printf("2.Range di eta [%i] to [%i]\n", eta_minima, eta_massima);
printf("3.Eta da evidenziare separatamente [%i] [%i] [%i] [%i] [%i]\n", eta_da_escludere[0], eta_da_escludere[1], eta_da_escludere[2], eta_da_escludere[3], eta_da_escludere[4]);
printf("4.Conferma\n");
printf("--------------------------------------------------------------\n");
printf("Inserire la preferenza: ");
}
void menu_1_1(void) {
system("cls");
banner_time();
printf("[!] Eta minima minore di quella massima Grazie\n");
printf("1.Eta massima\n");
printf("2.Eta minima\n");
printf("3.indietro\n");
printf("--------------------------------------------------------------\n");
printf("Inserire la preferenza: ");
}
void menu_1_2(int vettore_eta_escluse[]) {
system("cls");
banner_time();
printf("1.Eta [%i]\n", vettore_eta_escluse[0]);
printf("2.Eta [%i]\n", vettore_eta_escluse[1]);
printf("3.Eta [%i]\n", vettore_eta_escluse[2]);
printf("4.Eta [%i]\n", vettore_eta_escluse[3]);
printf("5.Eta [%i]\n", vettore_eta_escluse[4]);
printf("6.indietro\n");
printf("--------------------------------------------------------------\n");
printf("Inserire la preferenza: ");
}
void menu_2(void) {
system("cls");
banner_time();
printf("1.Preferenze impostate\n");
printf("2.Persone totali\n");
printf("3.Persone maggiorenni\n");
printf("4.Persone Minorenni\n");
printf("5.Persone escluse\n");
printf("6.Esci\n");
printf("--------------------------------------------------------------\n");
printf("Inserire la preferenza: ");
}
int input_numero_di_persone () {
int i, x;
do {
system("cls");
banner_time();
printf("Inserire numero di persone:");
scanf("%i", &x);
if (x<=0) {
for (i=5;i>0;i--){
system("cls");
banner_time();
printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
sleep(1);
}
}
} while(x<=0);
return (x);
}
int input_eta_massima() {
int x, i;
do {
system("cls");
banner_time();
printf("Inserire l'eta massima: ");
scanf("%i", &x);
if (x<=0) {
for (i=5;i>0;i--){
system("cls");
banner_time();
printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
sleep(1);
}
}
}while((x<=1) && (x>=99));
return (x);
}
int input_eta_minima() {
int x, i;
do {
system("cls");
banner_time();
printf("Inserire l'eta minima: ");
scanf("%i", &x);
if (x<=0) {
for (i=5;i>0;i--){
system("cls");
banner_time();
printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
sleep(1);
}
}
} while((x<=1) && (x>=99));
return (x);
}
int input_eta_da_escludere() {
int x, i;
do {
system("cls");
banner_time();
printf("Inserire l'eta da escludere: ");
scanf("%i", &x);
if (x<=0) {
for (i=5;i>0;i--){
system("cls");
banner_time();
printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
sleep(1);
}
}
} while(x<0);
return (x);
}
void output_impostazioni_menu(int numero_di_persone, int eta_massima, int eta_minima, int eta_da_escludere[]) {
int i;
system("cls");
banner_time();
printf("Numero di persone:\t%i", numero_di_persone);
printf("\nEta massima:\t\t%i", eta_massima);
printf("\nEta minima:\t\t%i", eta_minima);
printf("\nEta escluse:\t\t");
for (i=0;i<5;i++) {
if(eta_da_escludere[i]!=0) printf("%i\t", eta_da_escludere[i]);
}
printf("\n--------------------------------------------------------------\n");
printf("Premi un tasto per tornare al menu. . .");
getch();
}
void caricamento_vettore_persone_totali(int numero_di_persone, int vettore_persone_totali[], int eta_massima, int eta_minima) {
int i;
srand(time(NULL));
for (i=0;i<numero_di_persone;i++) {
do {
vettore_persone_totali[i]=rand()%eta_massima+1;
if ((vettore_persone_totali[i]>=eta_minima) && (vettore_persone_totali[i]<=eta_massima)) {
}
else {
vettore_persone_totali[i]=0;
}
}while(vettore_persone_totali[i]==0);
}
}
int caricamento_vettore_persone_maggiorenni (int numero_di_persone, int vettore_persone_totali[], int vettore_persone_maggiorenni[], int vettore_posizione_persone_maggiorenni[]) {
int i, x=0;
for (i=0;i<numero_di_persone;i++) {
if (vettore_persone_totali[i]>=18) {
vettore_persone_maggiorenni[x]=vettore_persone_totali[i];
vettore_posizione_persone_maggiorenni[x]=i;
x++;
}
}
return(x);
}
int caricamento_vettore_persone_minorenni (int numero_di_persone, int vettore_persone_totali[], int vettore_persone_minorenni[], int vettore_posizione_persone_minorenni[]) {
int i, x=0;
for (i=0;i<numero_di_persone;i++) {
if (vettore_persone_totali[i]<=18) {
vettore_persone_minorenni[x]=vettore_persone_totali[i];
vettore_posizione_persone_minorenni[x]=i;
x++;
}
}
return(x);
}
int caricamento_vettore_persone_escluse (int numero_di_persone, int vettore_persone_totali[], int vettore_persone_escluse[], int vettore_posizione_persone_escluse[], int eta_da_escludere[]) {
int i, x=0;
for (i=0;i<numero_di_persone;i++) {
if (vettore_persone_totali[i]==eta_da_escludere[0] || vettore_persone_totali[i]==eta_da_escludere[1] || vettore_persone_totali[i]==eta_da_escludere[2] || vettore_persone_totali[i]==eta_da_escludere[3] || vettore_persone_totali[i]==eta_da_escludere[4]) {
vettore_persone_escluse[x]=vettore_persone_totali[i];
vettore_posizione_persone_escluse[x]=i;
x++;
}
}
return(x);
}
void output_persone_maggiorenni_menu(int vettore_posizione_persone_maggiorenni[], int vettore_persone_maggiorenni[], int persone_maggiorenni) {
int i;
system("cls");
banner_time();
printf("Persone\t\t Eta");
for (i=0;i<persone_maggiorenni;i++) {
printf("\n %i\t\t %i", vettore_posizione_persone_maggiorenni[i]+1, vettore_persone_maggiorenni[i]);
}
getch();
}
void output_persone_minorenni_menu(int vettore_posizione_persone_minorenni[], int vettore_persone_minorenni[], int persone_minorenni) {
int i;
system("cls");
banner_time();
printf("Persona\t\t Eta");
for (i=0;i<persone_minorenni;i++) {
printf("\n %i\t\t %i", vettore_posizione_persone_minorenni[i]+1, vettore_persone_minorenni[i]);
}
getch();
}
void output_persone_escluse_menu(int vettore_posizione_persone_escluse[], int vettore_persone_escluse[], int persone_escluse) {
int i;
system("cls");
banner_time();
printf("Persone\t\t Eta");
for (i=0;i<persone_escluse;i++) {
printf("\n %i\t\t %i", vettore_posizione_persone_escluse[i]+1, vettore_persone_escluse[i]);
}
getch();
}
void banner_time (void) {
time_t t;
time(&t);
printf("--------------------------------------------------------------\n");
printf("%s", ctime(&t));
printf("--------------------------------------------------------------\n");
}
void banner_grazie (void) {
int i;
system("cls");
for (i=0;i<5;i++) {
printf("Grazie di aver utilizzato il programma\n");
sleep(1);
}
}
void setcolor (unsigned short color) {
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,color);
}
void output_persone_totali_menu(int vettore_persone_totali[], int numero_di_persone, int eta_da_escludere[]) {
int i;
system("cls");
banner_time();
printf("Persona\t\t Eta");
for (i=0;i<numero_di_persone;i++) {
if (vettore_persone_totali[i]==eta_da_escludere[0] || vettore_persone_totali[i]==eta_da_escludere[1] || vettore_persone_totali[i]==eta_da_escludere[2] || vettore_persone_totali[i]==eta_da_escludere[3] || vettore_persone_totali[i]==eta_da_escludere[4]){
setcolor(3);
printf("\n %i\t\t %i", i+1, vettore_persone_totali[i]);
}
else if (vettore_persone_totali[i]>17) {
setcolor(2);
printf("\n %i\t\t %i", i+1, vettore_persone_totali[i]);
}
else {
setcolor(4);
printf("\n %i\t\t %i", i+1, vettore_persone_totali[i]);
}
}
setcolor(15);
getch();
}