Somma inversa di Array

  • Creatore Discussione Creatore Discussione MaxFor
  • Data di inizio Data di inizio

MaxFor

Nuovo Utente
13 Dic 2021
9
0
1
Salve , ho un problema con un semplice programma in C che somma gli elementi
inversi di due array . Il codice seguente in cui le dimensioni degli array e' gia determinata funziona senza problemi:

C:
include <stdio.h>
int main(void)
{
int n = 10;
int a[n], b[n], c[n];
int i;
char pausa;
printf("\nVettore a\n");
for(i=0; i<n; i++)
{
printf("Elemento %d del primo vettore: ", i+1);
scanf("%d", &a);
}
printf("\nVettore b\n");
for(i=0; i<n; i++)
{
printf("Elemento %d del secondo vettore: ", i+1);
scanf("%d", &b);
}
/* Somma incrociata a+b */
for(i=0; i<n; i++)
c = a + b[n-i-1];
printf("\nSomma incrociata a+b\n");

for(i=0; i<n; i++)  
printf("Elemento %d della somma incrociata: %d\n", i+1, c);
scanf("%c", &pausa);
scanf("%c", &pausa
}

Nel momento in cui aggiungo due linee di codice per inputare le dimensioni
degli array di volta in volta, inizia a sbagliare le somme degli ultimi elementi a caso
e non riesco a capire il motivo ; la modifica e' la seguente:

C:
include <stdio.h>

int main(void)
{
int n;
int a[n],b[n],c[n];
int i;
char pausa;
printf(" \nDimensione Array: \n\n");
scanf("%d",&n);

printf("\nVettore a\n");
for(i=0; i<n; i++)
{
printf("Elemento %d del primo vettore: ", i+1);
scanf("%d", &a);
}
printf("\nVettore b\n");
for(i=0; i<n; i++)
{
printf("Elemento %d del secondo vettore: ", i+1);
scanf("%d", &b);
}
/* Somma incrociata a+b */
for(i=0; i<n; i++)
c = a + b[n-i-1];
printf("\nSomma incrociata a+b\n");

for(i=0; i<n; i++)   
printf("Elemento %d della somma incrociata: %d\n", i+1, c);
scanf("%c", &pausa);
scanf("%c", &pausa);
}

Grazie in anticipo per le risposte.

Max
 
Ultima modifica di un moderatore:
int n;
int a[n],b[n],c[n];

n é indefinita

scanf("%d",&n);

ammesso che &n sia la variabile che riceve il risultato, l'input sta dopo la definizione di a, b e c

sistema la sequenza delle operazioni e vedi se funziona
 
  • Like
Reactions: MaxFor
int n;
int a[n],b[n],c[n];

n é indefinita

scanf("%d",&n);

ammesso che &n sia la variabile che riceve il risultato, l'input sta dopo la definizione di a, b e c

sistema la sequenza delle operazioni e vedi se funziona
Funziona . Grazie mille Marino. Dovro' rivedere anche altri programmi che mi danno strani problemi. Sono abituato
a dichiarare tutto subito in sequenza ma vedo che in taluni casi bisogna stare attenti.
Max
 

Discussioni simili