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