Accedi

Quarto vettore

PROBLEMA

Scrivere un programma che acquisiti da tastiera 3 array di tipo intero le cui dimensioni sono fornite da tastiera, restituisce a video un quarto vettore che contempla la sequenza del primo, del secondo e del terzo. Restituisce altresì il numero di pari e di dispari presenti nel quarto array.


CODICE SORGENTE

#include <stdio.h>
#include <stdlib.h>

//sezione dichiarazioni funzioni
int dimensioneVettore_A();
int dimensioneVettore_B();
int dimensioneVettore_C();
void caricamentoVettoreA();
void caricamentoVettoreB();
void caricamentoVettoreC();
void caricamentoVettoreD();
void visualizzaVettore_A();
void visualizzaVettore_B();
void visualizzaVettore_C();
void visualizzaVettore_D();
void pari();
void dispari();
void banner_time();
void banner_menu();
void banner_grazie();

//funzione principale del programam
int main(int argc, char *argv[]) {
 enum scelta {
  vettore_a_menu=1,
  vettore_b_menu,
  vettore_c_menu,
  vettore_d_menu
 };
 //sezione dichiarativa
 int n_a=0, n_b=0, n_c=0, scelta=0; //n_a=numero di elementi vettore A; scelta=scelta del numero
 n_a=dimensioneVettore_A();
 int vettore_A[n_a];
 caricamentoVettoreA(vettore_A, n_a);
 n_b=dimensioneVettore_B();
 int vettore_B[n_b];
 caricamentoVettoreB(vettore_B, n_b);
 n_c=dimensioneVettore_C();
 int vettore_C[n_c];
 caricamentoVettoreC(vettore_C, n_c);
 int vettore_D[n_a+n_b+n_c];
 caricamentoVettoreD(vettore_A, vettore_B, vettore_C, vettore_D, n_a, n_b, n_c);
 do {
  system("cls");
  banner_menu();
  scanf("\n%i", &scelta);
  switch (scelta) {
   case vettore_a_menu:
    visualizzaVettore_A(vettore_A, n_a);
    getch();
    break;
   case vettore_b_menu:
    visualizzaVettore_B(vettore_B, n_a);
    getch();
    break;
   case vettore_c_menu:
    visualizzaVettore_C(vettore_C, n_a);
    getch();
    break;
   case vettore_d_menu:
    visualizzaVettore_D(vettore_D, n_a, n_b, n_c);
    getch();
    break;
   case 5:
    banner_grazie();
    break;
  }
 }while((scelta>=0) && (scelta<5)); //compreso tra 1 e 5
 system("PAUSE");
 return 0;
}
int dimensioneVettore_A () {
 int i, x;
 //do while per ripetere lo scanf se non è conforme alla condizione
 do {
  system("cls");
  banner_time();
  printf("Inserire il numero di elementi del vettore A: ");
  scanf("%i", &x);
  if (x<=0) {
   //attesa di 5 secondi per poter reinserire l'input
   for (i=5;i>0;i--){
    system("cls");
    printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
    sleep(1);
   }
   system("cls");
   printf("Inserire nuovamente il valore: ");
  }
 } while(x<=0); //deve essere maggiore di 0 per uscire dal ciclo
 return (x); //richiamare il risultato con input();
}
int dimensioneVettore_B () {
 int i, x;
 //do while per ripetere lo scanf se non è conforme alla condizione
 do {
  system("cls");
  banner_time();
  printf("Inserire il numero di elementi del vettore B: ");
  scanf("%i", &x);
  if (x<=0) {
   //attesa di 5 secondi per poter reinserire l'input
   for (i=5;i>0;i--){
    system("cls");
    printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
    sleep(1);
   }
   system("cls");
   printf("Inserire nuovamente il valore: ");
  }
 } while(x<=0); //deve essere maggiore di 0 per uscire dal ciclo
 return (x); //richiamare il risultato con input();
}
int dimensioneVettore_C () {
 int i, x;
 //do while per ripetere lo scanf se non è conforme alla condizione
 do {
  system("cls");
  banner_time();
  printf("Inserire il numero di elementi del vettore C: ");
  scanf("%i", &x);
  if (x<=0) {
   //attesa di 5 secondi per poter reinserire l'input
   for (i=5;i>0;i--){
    system("cls");
    printf("[!] Il valore immesso non e' valido potrai reinserire il valore tra %i secondi", i);
    sleep(1);
   }
   system("cls");
   printf("Inserire nuovamente il valore: ");
  }
 } while(x<=0); //deve essere maggiore di 0 per uscire dal ciclo
 return (x); //richiamare il risultato con input();
}
void caricamentoVettoreA(int vettore_A[], int n_a) {
 //sezione dichiarativa
 int i;
 //ciclo for per caricare il primo array
 system("cls");
 banner_time();
 for (i=0;i<n_a;i++) {
  printf("inserisci il %i valore del Vettore A: ", i+1);
  scanf("%i", &vettore_A[i]);
 }
}
void caricamentoVettoreB(int vettore_B[], int n_b) {
 //sezione dichiarativa
 int i;
 //ciclo for per caricare il primo array
 system("cls");
 banner_time();
 for (i=0;i<n_b;i++) {
  printf("inserisci il %i valore del Vettore B: ", i+1);
  scanf("%i", &vettore_B[i]);
 }
}
void caricamentoVettoreC(int vettore_C[], int n_c) {
 //sezione dichiarativa
 int i;
 //ciclo for per caricare il primo array
 system("cls");
 banner_time();
 for (i=0;i<n_c;i++) {
  printf("inserisci il %i valore del Vettore C: ", i+1);
  scanf("%i", &vettore_C[i]);
 }
}
void caricamentoVettoreD(int vettore_A[], int vettore_B[], int vettore_C[], int vettore_D[], int n_a, int n_b, int n_c){
 //sezione dichiarativa
 int j=0, i;
 //collocare il vettore A nella prima parte disponibile del Vettore D
 for(i=0;i<n_a;i++){
  vettore_D[j] = vettore_A[i];
  j++;
 }
 //collocare il vettore B nella prima parte consegutiva alla precedente del Vettore D
 for(i=0;i<n_b;i++){
  vettore_D[j] = vettore_B[i];
  j++;
 }
 //collocare il vettore C nella prima parte consegutiva alla precedente del Vettore D
 for(i=0;i<n_c;i++){
  vettore_D[j] = vettore_C[i];
  j++;
 }
}
void visualizzaVettore_A (int vettore_A[], int n_a){
 //sezione dichiarativa
 int i;
 system("cls");
 //richiaamo funzione
 banner_time();
 printf("Elemento\tContenuto");
 //for per mostrare a video posizione e contenuto
 for (i=0;i<n_a;i++) {
  printf("\n   %i\t\t   %i", i+1, vettore_A[i]);
 }
 printf("\n----------------------------------------------------\n");
 printf("Premi un tasto per tornare al menu...");
}

void visualizzaVettore_B (int vettore_B[], int n_b){
 //sezione dichiarativa
 int i;
 system("cls");
 //richiaamo funzione
 banner_time();
 printf("Elemento\tContenuto");
 //for per mostrare a video posizione e contenuto
 for (i=0;i<n_b;i++) {
  printf("\n   %i\t\t   %i", i+1, vettore_B[i]);
 }
 printf("\n----------------------------------------------------\n");
 printf("Premi un tasto per tornare al menu...");
}

void visualizzaVettore_C (int vettore_C[], int n_c){
 //sezione dichiarativa
 int i;
 system("cls");
 //richiamo funzione
 banner_time();
 printf("Elemento\tContenuto");
 //for per mostrare a video posizione e contenuto
 for (i=0;i<n_c;i++) {
  printf("\n   %i\t\t   %i", i+1, vettore_C[i]);
 }
 printf("\n----------------------------------------------------\n");
 printf("Premi un tasto per tornare al menu...");
}
void pari (int vettore_D[], int n_a, int n_b, int n_c) {
 //sezione dichiarativa
 int i, pari=0;
 //for per contare i numeri pari nel vettore D
 for(i=0;i<n_a+n_b+n_c;i++){
  if (vettore_D[i]%2==0) {
   pari++;
  }
 }
 //valore a video
 printf("Numero di elementi pari:%i", pari);
 printf("\n----------------------------------------------------\n");
}

void dispari (int vettore_D[], int n_a, int n_b, int n_c) {
 //sezione dichiarativa
 int i, dispari=0;
 //for per contare i numeri dispari nel vettore D
 for(i=0;i<n_a+n_b+n_c;i++){
  if (vettore_D[i]%2!=0) {
   dispari++;
  }
 }
 //valore a video
 printf("Numero di elementi dispari:%i", dispari);
 printf("\n----------------------------------------------------\n");
}
void visualizzaVettore_D(int vettore_D[], int n_a, int n_b, int n_c){
 //sezione dichiarativa
 int i;
 system("cls");
 banner_time();
 printf("Elemento\tContenuto");
 //for per mostrare posizione e contenuto
 for(i=0;i<n_a+n_b+n_c;i++){
  printf("\n   %i\t\t   %i", i+1, vettore_D[i]);
 }
 printf("\n----------------------------------------------------\n");
 pari(vettore_D, n_a, n_b, n_c);
 dispari(vettore_D, n_a, n_b, n_c);
 printf("Premi un tasto per tornare al menu...");
}
void banner_time (void) {
 //sezione dichiarativa
 time_t t;
 time(&t);
 printf("----------------------------------------------------\n");
 printf("%s", ctime(&t));
 printf("----------------------------------------------------\n");
}
void banner_menu (void) {
 banner_time();
 printf("1. Contenuto Vettore A\n");
 printf("2. Contenuto Vettore B\n");
 printf("3. Contenuto Vettore C\n");
 printf("4. Contenuto Vettore D\n");
 printf("5. Esci\n");
 printf("----------------------------------------------------\n");
 printf("Inserire voce del menu: ");
}
void banner_grazie (void) {
 int i;
 system("cls");
 for (i=0;i<5;i++) {
  printf("Grazie di aver utilizzato il programma\n");
  sleep(1);
 }
}