PDA

Visualizza la versione completa : [C] Memorizzare valori in vettori


Sos_Code
07-06-2012, 14:10
Salve a tutti!
Ho realizzato un programma che però non funziona come dovrebbe.
Il programma deve definire due vettori v1 e v2 di N elementi di tipo intero e memorizzare nei vettori valori “accettabili” acquisiti da tastiera secondo queste regole:
a. In v1 devono essere memorizzati solo i valori positivi ed i valori negativi multipli di 3
b. In v2 devono essere memorizzati solo i valori negativi non multipli di 3 e dispari
Tutti gli altri valori acquisiti devono essere ignorati e quando uno dei due vettori è pieno deve finire il riempimento.

Il mio programma però non mi inserisce i valori nel vettore.
Mi spiegate dov è l'errore?



#include <stdio.h>
#include <stdlib.h>
#define N 5

int main()
{
int v1[N], v2[N], ind1, ind2, dato, numdati1, numdati2;

ind1 = 0;
ind2 = 0;
printf("Inserire elementi:\n");

while ((ind1<N) && (ind2<N))
{
scanf("%d", &dato);

if ((dato>=0) | (dato%3==0))
{
v1[ind1] = dato;
ind1 ++;
}

else
if ((dato<0 && dato%3!=0) || (dato%2 != 0))
{
v2[ind2] = dato;
ind2 ++;
}
}

numdati1 = ind1;
numdati2 = ind2;
printf("Il contenuto del primo vettore e':\n");
for (ind1=0; ind1<numdati1; ind1++)
printf("%d\n", v1[N]);

printf("Il contenuto del secondo vettore e':\n");
for (ind2=0; ind2<numdati2; ind2++)
printf("%d\n", v2[N]);


return 0;
}

oregon
07-06-2012, 14:14
Ti sembra corretta queste linee?

printf("%d\n", v1[N]);

printf("%d\n", v1[N]);

Sos_Code
07-06-2012, 14:21
Ah ecco allora! Anziché v1[N] avrei dovuto scrivere v1[ind1] e così anche sotto!

Però mi spieghi una cosa? Se io non avessi introdotto le due variabili numdati1 e numdati2, allora avrei potuto scrivere v1[N] e v2[N], o sarebbe stato sbagliato lo stesso?

Scara95
07-06-2012, 14:36
N è semplicemente sostituito con 5, fai le tue considerazioni...

Mond0
07-06-2012, 14:52
no, N è una costante e vale sempre 5. Ricorda che in questo caso gli indici del vettore devono andare da 0 a 4...

Who am I
07-06-2012, 14:53
v1[N] va fuori dagli indici dell' array, che essendo di dimensione N, ha N elementi che hanno indici 0,1,2,....,N-1 .

Loading