Accedi

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();
}