PDA

Visualizza la versione completa : [C] Ordinamento di un array


Insaponata
29-12-2005, 19:50
ecco il mio programmino:



#include <stdio.h>

/* l'array ha dimensione n */
#define n 10

/* dichiarazione della funzione di ordinamento */
void ordina(int, int *);

int main()
{
int i;
int vet[n];

/*prendiamo in input l'array*/
for(i=0; i<n; i++)
{
printf("inserire l'elemento n.%d: ", i);
scanf("%d", vet + i);

}

/*ordiniamo l'array*/
ordina(n,vet);

/*mostriamolo*/
printf ("l'array : ");
for(i=0;i<n;i++)
printf("%d, ",vet[i]);

}

void ordina(int n, int *vet)
{
int i,j,min,temp;

for(i=0;i<n;i++)
{
min=i;
for(j=i+1;j<n;j++)
if(vet[j]<vet[min])
min=j;

/*ora scambiamo le posizioni*/
temp=vet[i];
vet[i]=vet[min];
vet[min]=temp;
}
}


Ma non viene compilato... mi viene restituito il seguente errore:



Compiling...
prova.c
C:\Documents and Settings\Andrea e Antonio\Desktop\C\prova.c(35) : error C2143: syntax error : missing ')' before 'constant'
C:\Documents and Settings\Andrea e Antonio\Desktop\C\prova.c(35) : error C2143: syntax error : missing '{' before 'constant'
C:\Documents and Settings\Andrea e Antonio\Desktop\C\prova.c(35) : error C2059: syntax error : '<Unknown>'
C:\Documents and Settings\Andrea e Antonio\Desktop\C\prova.c(35) : error C2059: syntax error : ')'
Error executing cl.exe.

prova.obj - 4 error(s), 0 warning(s)


in pratica non gli piace la riga


void ordina(int n, int *vet)


Come mai?

floyd
29-12-2005, 19:57
io metterei la dichiarazione cos
void ordina(int n, int* vet);

Poker1
29-12-2005, 20:00
#include <stdio.h>

/* l'array ha dimensione n */
#define N 10

/* dichiarazione della funzione di ordinamento */
void ordina(int, int*);

int main()
{
int i;
int vet[N];

/*prendiamo in input l'array*/
for(i=0; i<N; i++)
{
printf("inserire l'elemento n.%d: ", i);
scanf("%d", vet + i);

}

/*ordiniamo l'array*/
ordina(N,vet);

/*mostriamolo*/
printf ("l'array : ");
for(i=0;i<N;i++)
printf("%d, ",vet[i]);

}

void ordina(int n, int *vet)
{
int i,j,min,temp;

for(i=0;i<n;i++)
{
min=i;
for(j=i+1;j<n;j++)
if(vet[j]<vet[min])
min=j;

/*ora scambiamo le posizioni*/
temp=vet[i];
vet[i]=vet[min];
vet[min]=temp;
}
}


Il prototipo di funzione e':


void ordina(int, int*);

e non


void ordina(int, int *);


Poi, quando usi le macro usa sempre lettere maiuscole per convenzione:



#define N 10

e non


#define n 10

{Bl4d3}
30-12-2005, 13:28
non puoi passare come parametro n

come se nella nell'intestazione scrivessi:
void ordina(int 10, int *vet)

quello l'errore, non ti serve passarlo n se una define, lo sostituisce in tutto il programma con 10...

Loading