[C] Dichiarazione funzione ordina vettore

di il
5 risposte

[C] Dichiarazione funzione ordina vettore

Buona sera, ho appena scritto un codice che mi permette di ordinare tutti gli elementi di un vettore di interi in ordine crescente. Il mio problema è che non riesco a creare una funzione apparte che ordini gli elementi. Ecco il codice:

#include <stdio.h>
#include <stdlib.h>

 int main(){
     const int MAX = 30;
     
     int v[MAX];
     int N;
     int conta1,conta2;
     int scambio;
     
     printf("Elementi del vettore: ");
     scanf("%d",&N);
     
     for(conta1=0;conta1<N;conta1++){
         printf("Elemento n %d del vettore: ",conta1);
         scanf("%d",&v[conta1]);
     }
     
     printf("Vettore ordinato: ");
              for(conta1=0;conta1<N;conta1++){
         for(conta2=0;conta2<N;conta2++){
             if(v[conta1]<v[conta2]){
                 scambio=v[conta1];
                 v[conta1]=v[conta2];
                 v[conta2]=scambio;
                 }
         }
     }
     for(conta1=0;conta1<N;conta1++)
         printf("%d",v[conta1]);
         
     
     exit(0);
 }

5 Risposte

  • Re: [C] Dichiarazione funzione ordina vettore

    Ci hai provato? Che problemi hai avuto?

    P.S. Un programma termina con return non con exit
  • Re: [C] Dichiarazione funzione ordina vettore

    oregon ha scritto:


    Ci hai provato? Che problemi hai avuto?

    P.S. Un programma termina con return non con exit
    Ho creato la funzione col relativo prototipo però il programma non ordina il vettore. Mi servirebbe una mano con gli argomenti della funzione.
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 30
    
    int ordina();
    
     int main(){
         
         int v[MAX];
         int N;
         int conta1,conta2;
         int scambio;
         
         printf("Elementi del vettore: ");
         scanf("%d",&N);
         
         for(conta1=0;conta1<N;conta1++){
             printf("Elemento n %d del vettore: ",conta1);
             scanf("%d",&v[conta1]);
         }
         
         printf("Vettore ordinato: ");
         ordina();
         
         for(conta1=0;conta1<N;conta1++)
             printf("%d",v[conta1]);
             
         return(0);
     }
    
    int ordina(){
        int conta1,conta2,scambio,v[MAX],N;
                      for(conta1=0;conta1<N;conta1++){
             for(conta2=0;conta2<N;conta2++){
                 if(v[conta1]<v[conta2]){
                     scambio=v[conta1];
                     v[conta1]=v[conta2];
                     v[conta2]=scambio;
                     }
             }
                  }
    }
    
  • Re: [C] Dichiarazione funzione ordina vettore

    Non è particolarmente difficile ... dai un'occhiata
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 30
    
    void ordina(int arr[], int nelem);
    
    int main() 
    {
    	int v[MAX];
    	int N, conta;
    
    	printf("Elementi del vettore: ");
    	scanf("%d", &N);
    
    	for (conta = 0; conta<N; conta++) {
    		printf("Elemento n %d del vettore: ", conta);
    		scanf("%d", &v[conta]);
    	}
    
    	ordina(v, N);
    
    	printf("Vettore ordinato: \n");
    	for (conta = 0; conta<N; conta++)
    		printf("%d ", v[conta]);
    
    	printf("\n");
    	return(0);
    }
    
    void ordina(int arr[], int nelem) 
    {
    	int conta1, conta2, scambio;
    
    	for (conta1 = 0; conta1<nelem; conta1++) {
    		for (conta2 = 0; conta2<nelem; conta2++) {
    			if (arr[conta1]<arr[conta2]) {
    				scambio = arr[conta1];
    				arr[conta1] = arr[conta2];
    				arr[conta2] = scambio;
    			}
    		}
    	}
    }
    
    
  • Re: [C] Dichiarazione funzione ordina vettore

    oregon ha scritto:


    Non è particolarmente difficile ... dai un'occhiata
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 30
    
    void ordina(int arr[], int nelem);
    
    int main() 
    {
    	int v[MAX];
    	int N, conta;
    
    	printf("Elementi del vettore: ");
    	scanf("%d", &N);
    
    	for (conta = 0; conta<N; conta++) {
    		printf("Elemento n %d del vettore: ", conta);
    		scanf("%d", &v[conta]);
    	}
    
    	ordina(v, N);
    
    	printf("Vettore ordinato: \n");
    	for (conta = 0; conta<N; conta++)
    		printf("%d ", v[conta]);
    
    	printf("\n");
    	return(0);
    }
    
    void ordina(int arr[], int nelem) 
    {
    	int conta1, conta2, scambio;
    
    	for (conta1 = 0; conta1<nelem; conta1++) {
    		for (conta2 = 0; conta2<nelem; conta2++) {
    			if (arr[conta1]<arr[conta2]) {
    				scambio = arr[conta1];
    				arr[conta1] = arr[conta2];
    				arr[conta2] = scambio;
    			}
    		}
    	}
    }
    
    
    Quindi negli argomenti della funzione inserisco solamente i valori in ingresso/uscita?
  • Re: [C] Dichiarazione funzione ordina vettore

    E cosa vorresti farci con gli argomenti?
Devi accedere o registrarti per scrivere nel forum
5 risposte