Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-01-2008, 13:44   #1
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
[Turbo C]Problema vettori

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

Codice PHP:
#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]); 
}
MinaVagante è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 14:23   #2
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
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.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 15:43   #3
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
cioè??? Ma perchè se la chiamavo in un altro modo non sostituiva 5???
MinaVagante è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 15:54   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
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:
Codice:
void StampaVettore(int b[],int N)
con
Codice:
void StampaVettore(int b[],int 5)
... è ovvio che ti da errore.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 16:15   #5
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
e così sarebbe giusto???
#include<stdio.h>
#include<conio.h>

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

Codice PHP:
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]); 

MinaVagante è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 16:50   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
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.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 16:59   #7
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
in questo modo??
void StampaVettore(int b[],int n)
{ int i;

for(i=0;i<n;i++)
printf("%3d",a[i]);
}
dovrebbe essere giusta??
MinaVagante è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 17:03   #8
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
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.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 17:12   #9
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
si scusa ho sbagliato di scrivere e di copiare,così dovrebbe andare??
Codice PHP:
#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]);

MinaVagante è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 17:17   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
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.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 18-01-2008, 17:23   #11
MinaVagante
Senior Member
 
Iscritto dal: Sep 2007
Messaggi: 351
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
MinaVagante è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:20.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v