Nuovo elemento in testa e in coda al vettore
PROBLEMA
Dopo aver caricato in memoria un vettore di interi con dimensione d (con d inserito da tastiera), inserire “in coda” ed in “testa”al vettore un nuovo elemento. Scrivere il vettore iniziale e il vettore modificato
DIAGRAMMA A BLOCCHI
Clicca qui per visualizzare il Diagramma a blocchi.
CODICE SORGENTE
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void traccia();
int input();
void caricamentoVettoreA();
void caricamentoVettoreB();
int valore();
int valore_2();
void visualizzaVettore_A();
void visualizzaVettore_B();
void banner_time();
void uscitaProgramma();
int main(int argc, char *argv[]) {
//sezione dichiarativa
int d, i, nuovo_elemento, nuovo_elemento_2; //d=numero elementi; i=indice; nuovo_elemento=elemento in testa; nuovo_elemento_2=elemento in coda
traccia();
d=input();
int array_a[d];
int array_b[d+1];
caricamentoVettoreA(array_a, d);
nuovo_elemento=valore();
nuovo_elemento_2=valore_2();
caricamentoVettoreB(array_a, array_b, d, nuovo_elemento, nuovo_elemento_2);
visualizzaVettore_A(array_a, d);
visualizzaVettore_B(array_b, d);
uscitaProgramma();
system("PAUSE");
return 0;
}
//funzione per visualizzare la traccia
void traccia (void) {
int i;
for (i=10;i>0;i--){
system("cls");
banner_time();
printf("Dopo aver caricato in memoria un vettore di interi con dimensione d (con d inserito da tastiera),");
printf("\ninserire “in coda” ed in “testa”al vettore un nuovo elemento. Scrivere il vettore iniziale e il vettore modificato.");
printf("\n\nSarai reinderizzato al programma tra %i", i);
sleep(1);
}
}
//sezione controllo dell'input per la creazione del vettore
int input () {
//sezione dichiarativa
int i, x; //i=contatore; x=numero di elementi
//do while per ripetere lo scanf se non è conforme alla condizione
do {
system("cls");
banner_time();
printf("Inserire numero di elementi del vettore:");
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);
}
}
} while(x<=0); //deve essere maggiore di 0 per uscire dal ciclo
return (x); //richiamare il risultato con input();
}
//caricamento del vettore numero 1 da parte dell'utente
void caricamentoVettoreA(int array_a[], int d) {
//sezione dichiarativa
int i;
system("cls");
banner_time();
//ciclo for per richiedere all'utente il contenuto degli elementi
for (i=0;i<d;i++) {
printf("inserisci il %i valore del Vettore A: ", i+1);
scanf("%i", &array_a[i]);
}
}
//richiesta del nuovo valore da mettere in testa
int valore () {
//sezione dichirativa
int x;
system("cls");
banner_time();
printf("Inserire nuovo valore in testa: ");
scanf("%i", &x);
return (x);
}
int valore_2 () {
//sezione dichirativa
int x;
system("cls");
banner_time();
printf("Inserire nuovo valore in coda: ");
scanf("%i", &x);
return (x);
}
//caricamento del vettore numero 2 con in testa il nuovo elemento
void caricamentoVettoreB(int array_a[], int array_b[], int d, int nuovo_elemento, int nuovo_elemento_2) {
int i;
array_b[0]=nuovo_elemento;
for (i=1;i<d+1;i++) {
array_b[i]=array_a[i-1];
}
array_b[d+1]=nuovo_elemento_2;
}
//funzione per visualizzare il primo vettore
void visualizzaVettore_A (int array_a[], int d){
//sezione dichiarativa
int i;
system("cls");
//richiamo funzione
banner_time();
printf("\t\tVettore A");
printf("\n----------------------------------------------------\n");
printf("\tElemento\tContenuto");
//for per mostrare a video posizione e contenuto
for (i=0;i<d;i++) {
printf("\n\t %i\t\t %i", i+1, array_a[i]);
}
printf("\n----------------------------------------------------\n");
}
//funzione per visualizzare il secondo vettore
void visualizzaVettore_B (int array_b[], int d){
//sezione dichiarativa
int i;
//system("cls");
//richiamo funzione
//banner_time();
printf("\t\tVettore B");
printf("\n----------------------------------------------------\n");
printf("\tElemento\tContenuto");
//for per mostrare a video posizione e contenuto
for (i=0;i<d+1+1;i++) {
printf("\n\t %i\t\t %i", i+1, array_b[i]);
}
printf("\n----------------------------------------------------\n");
}
//funzione per visualizzare l'orario
void banner_time (void) {
//sezione dichiarativa
time_t t;
time(&t);
printf("----------------------------------------------------\n");
printf("%s", ctime(&t));
printf("----------------------------------------------------\n");
}
//funzione ringraziamento
void uscitaProgramma (void) {
//sezione dichiarativa
int i;
printf("Premi un tasto per chiudere il programma...");
getch();
system("cls");
for (i=0;i<5;i++) {
printf("Grazie di aver utilizzato il programma\n\n");
sleep(1);
}
}