Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] ordinamento di un'array

    ecco il mio programmino:

    codice:
    #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:

    codice:
    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
    codice:
    void ordina(int n, int *vet)
    Come mai?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    io metterei la dichiarazione così
    void ordina(int n, int* vet);

  3. #3
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    codice:
    #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':
    codice:
    void ordina(int, int*);
    e non
    codice:
    void ordina(int, int *);
    Poi, quando usi le macro usa sempre lettere maiuscole per convenzione:

    codice:
    #define N 10
    e non
    codice:
    #define n 10
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    117
    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...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.