Accedi

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