Array, tema d'esame!

di il
6 risposte

Array, tema d'esame!

Buona sera ,
mi sto preparando per un esame e durante l'esercitazione mi sono imbattuta in questo esercizio:
"Dati due vettori si crei un terzo vettore contenente l'inverso del primo vettore e poi si crei un quarto vettore che contenga la somma tra il vettore inverso e il secondo vettore."
Sono alla ricerca dell'errore perché durante la visualizzazione non compare il giusto risultato. Non riesco proprio a comprendere dove sbaglio. Potete aiutarmi?
#include <stdio.h>
#include <stdlib.h>

int main(){
int v1[10], v2[10], v_inv[10], v_somma[10];
int i, dim1, dim2;

do{
 printf("Quanti elementi vuoi inserire nel primo vettore?\n");
 scanf("%d", &dim1);

  if(dim1>10){
    printf("Il vettore non puo' contenere piu' di 10 elementi.!\nRIPROVA...\n\n");
  }
 for(i=0; i<dim1; i++){
  printf("Inserisci numero in posizione %d: ", i);
  scanf("%d", &v1[i]);
 }
}while(dim1>10);

do{
 printf("\nQuanti elementi vuoi inserire nel secondo vettore?\n");
 scanf("%d", &dim2);

  if(dim2>10){
    printf("Il vettore non puo' contenere piu' di 10 elementi.!\nRIPROVA...\n\n");
  }
 for(i=0; i<dim2; i++){
  printf("Inserisci numero in posizione %d: ", i);
  scanf("%d", &v2[i]);
 }
}while(dim2>10);

 for(i=dim1; i>=0; i--){
  v_inv[dim1-i]=v1[i];
 }
  printf("\nIl primo vettore invertito e':\n");
   for(i=0; i<dim1; i++){
    printf("%d\t", v_inv[i]);
   }

 for(i=0; i<10; i++){
  v_somma[i]=v_inv[i]+v2[i];
 }
  printf("\n\nIl vettore somma tra il vettore invertito e il secondo vettore e':\n");
   for(i=0; i<10; i++){
    printf("%d\n", v_somma[i]);
   }

printf("\n\n");

system("pause");
return 0;
}

6 Risposte

  • Re: Array, tema d'esame!

      for(i=dim1; i>=0; i--) {
            v_inv[dim1-i]=v1[i-1];
        }

    Il vettore inverso dovresti riempirlo così. Attento a v1[i-1] e non v1.

    Poi quando stampi il vettore di uscita, stampi tutte e dieci le celle del vettore che contengono dati casuali. Chiediti se i due vettori v1 e v2 non sono uguali che cosa stampo nella somma? E' consigliabile inizializzare i due vettori prima di utilizzarli. Oppure fare controlli per fa sì che le dimensioni siano le stesse. Comunque non è bello stampare tutto il vettore somma, ma solo la parte contenente i dati utili.
  • Re: Array, tema d'esame!

    SVNiko ha scritto:


    Il vettore inverso dovresti riempirlo così. Attento a v1[i-1] e non v1.


    Ho corretto l'errore dovuto ad una mia distrazione e adesso dopo averlo modificato e ricompilato mi da sempre lo stesso errore, ovvero nella prima cella compaiono dei numeri strani e successivamente quelle del vettore invertito meno il primo numero. Non capisco il perché.
    Per il vettore somma adesso provo a fare il controllo per quanto riguarda la dimensione. Non ci avevo pensato
  • Re: Array, tema d'esame!

    Ho appena provato e sembra funzionare.

    Puoi inserire scrivere i dati che inserisci e l'output che ottieni?
  • Re: Array, tema d'esame!

    Quanti elementi vuoi inserire nel primo vettore?
    4
    Inserisci numero in posizione 0: 1
    Inserisci numero in posizione 1: 2
    Inserisci numero in posizione 2: 3
    Inserisci numero in posizione 3: 4

    Quanti elementi vuoi inserire nel secondo vettore?
    4
    Inserisci numero in posizione 0: 5
    Inserisci numero in posizione 1: 6
    Inserisci numero in posizione 2: 7
    Inserisci numero in posizione 3: 8

    Il primo vettore invertito e':
    1975612477 4 3 2

    Il vettore somma tra il vettore invertito e il secondo vettore e':
    1975612482
    10
    10
    10


    Premere un tasto per continuare . . .
  • Re: Array, tema d'esame!

    Quanti elementi vuoi inserire nel primo vettore?
    4
    Inserisci numero in posizione 0: 1
    Inserisci numero in posizione 1: 2
    Inserisci numero in posizione 2: 3
    Inserisci numero in posizione 3: 4

    Quanti elementi vuoi inserire nel secondo vettore?
    4
    Inserisci numero in posizione 0: 5
    Inserisci numero in posizione 1: 6
    Inserisci numero in posizione 2: 7
    Inserisci numero in posizione 3: 8

    Il primo vettore invertito e':
    4 3 2 1

    Il vettore somma tra il vettore invertito e il secondo vettore e':
    9
    9
    9
    9


    sh: 1: pause: not found

    Process returned 0 (0x0) execution time : 8.355 s
    Press ENTER to continue.
  • Re: Array, tema d'esame!

    Bene , forse il mio code blocks fa i capricci. Comunque l'importante che adesso e' tutto corretto. Grazie!
    Ps: ho fatto il controllo sulla dimensione
Devi accedere o registrarti per scrivere nel forum
6 risposte