Entra

View Full Version : [Turbo C]Problema vettori


MinaVagante
18-01-2008, 13:44
Ciao a tutti, non riesco a capire perchè non funzioni questo programma, mi potreste dare un suggerimento??MI continua a scrivere )exspected, evidenziandomi la riga dove c'è il protoripo della funzione StmapaVettore, grazie mille

#include<stdio.h>
#include<conio.h>

#define N 5
void StampaVettore(int,int);

int main()
{ int a[N],i;

for(i=0;i<N;i++)
scanf("%d",&a[i]);

StampaVettore(a,N);
getch();
}


void StampaVettore(int b[],int N)
{ int i;

for(i=0;i<N;i++)
printf("%3d",a[i]);
}

VICIUS
18-01-2008, 14:23
Nella funzione StampaVettore la N che hai messo come secondo argomento viene sostituita da un 5 durante la compilazione per via del #define che c'è all'inizio. I nomi delle variabili non possono cominciare per un numero quindi ti da errore.

MinaVagante
18-01-2008, 15:43
cioè??? Ma perchè se la chiamavo in un altro modo non sostituiva 5???

banryu79
18-01-2008, 15:54
nella definizione della funzione StampaVettore devi sostituire il nome del secondo parametro formale e non chiamarlo 'N' come ti ha già spiegato VICIUS qui sopra.

dato che hai fatto #define N 5 il compilatore quando legge N sostituisce con 5, quindi quando processa la definizione della tua funzione sostituisce:

void StampaVettore(int b[],int N)

con

void StampaVettore(int b[],int 5)

... è ovvio che ti da errore.

MinaVagante
18-01-2008, 16:15
e così sarebbe giusto???
#include<stdio.h>
#include<conio.h>

#define N 5
void StampaVettore(int,int);

int main()
{ int a[N],i;

for(i=0;i<N;i++)
scanf("%d",&a[i]);

StampaVettore(a,N);
getch();
}


void StampaVettore(int b[],int n)
{ int i;

for(i=0;i<N;i++)
printf("%3d",a[i]);
}

VICIUS
18-01-2008, 16:50
Di certo compila ma a questo punto a cosa ti serve la variabile "n" se poi non la usi mai. Il for usa N che viene sostituito con 5 quindi, ho sostituisci anche li N con n oppure elimini direttamente il secondo parametro dalla funzione.

MinaVagante
18-01-2008, 16:59
in questo modo??
void StampaVettore(int b[],int n)
{ int i;

for(i=0;i<n;i++)
printf("%3d",a[i]);
}
dovrebbe essere giusta??

VICIUS
18-01-2008, 17:03
C'è quel a[i] che noto solo ora che è sbagliato perché in quella funzione non esiste la variabile a[] ma per il resto dovrebbe essere giusta.

MinaVagante
18-01-2008, 17:12
si scusa ho sbagliato di scrivere e di copiare,così dovrebbe andare??
#include<stdio.h>
#include<conio.h>

#define N 5
void StampaVettore(int,int);

int main()
{ int a[N],i;

for(i=0;i<N;i++)
scanf("%d",&a[i]);

StampaVettore(a,N);
getch();
}


void StampaVettore(int b[],int n)
{ int j;

for(j=0;j<n;j++)
printf("%3d",b[i]);
}

VICIUS
18-01-2008, 17:17
Ci sei quasi :)
C'è un piccolo errore nel prototipo in cima ed uno nella funzione che stampa i vettori. Prova a risolverli da solo dopo di che dovrebbe andare di sicuro. Purtroppo non ho turbo c per provare, quindi non posso darti la conferma definitiva.

MinaVagante
18-01-2008, 17:23
Si scusa ho sbagliato di nuovo di copiare, nella funzione ho sbalgiato l'indice. Adesso funziona, pensavo che nel prototipo, bastasse inserire solo il tipo di variabile senza specificarne il nome. Grazie mille della pazienza :)