Date un occhio a questo programma di ordinamento array

di Anonimizzato3282 il
6 risposte
L'algoritmo di orgdinamento senza sottoprogramma mi funziona, invece con il sottoprogramma no.....gentilmente mi date una mano?

con sottoprogramma:
#include <stdio.h>
#include <stdlib.h>

void ord_inser(int a[],int n);
void stampa_array(int ARRAY[],int N);
void leggi_array(int ARRAY[],int N);

void main()
{
int n;
int v[100];
printf(\"Inserisci la dimensione del array che vuoi ordinare:\\n\");
scanf(\"%d\",&n);

leggi_array(v,n);
stampa_array(v,n);

ord_inser(v,n);
printf(\"\\n\\n\");
stampa_array(v,n);

system (\"pause\");
return 0;
}

void ord_inser(int a[],int n)
{
int i,j;
int x;
    
    for(i=0;i<n-1;i++)
        {
        for(j=0;j<n-1-i;j++)
                {
                if(a[j]>a[j+1])
                  x=a[j];
                  a[j]=a[j+1];
                  a[j+1]=x;
                }
        }    
}

void leggi_array(int ARRAY[],int N)
{
int i;
    for(i=0;i<N;i++)
        {
        printf(\"Inserisci l'elemento %d :\",i);
        scanf(\"%d\",&ARRAY[i]);
        }
}


//stampa un array
void stampa_array(int ARRAY[],int N)
{
int i;
    for(i=0;i<N;i++)
        printf(\"%d \",ARRAY[i]);
}


senza sottoprogramma:
#include <stdio.h>
#include <stdlib.h>

void leggi_array(int ARRAY[],int N);
void stampa_array(int ARRAY[],int N);


void main()
{
int a[100];
int i,j,n;
int temp;

printf(\"inserisci la dim:\");
scanf(\"%d\",&n);

leggi_array(a,n);
    
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-i;j++)
         {
          if(a[j]>a[j+1])
                {
                temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
                }
         }
    }

    
stampa_array(a,n);

system (\"pause\");
return 0;

}





void leggi_array(int ARRAY[],int N)
{
int i;
    for(i=0;i<N;i++)
        {
        printf(\"Inserisci l'elemento %d :\",i);
        scanf(\"%d\",&ARRAY[i]);
        }
}


//stampa un array
void stampa_array(int ARRAY[],int N)
{
int i;
    for(i=0;i<N;i++)
        printf(\"%d \",ARRAY[i]);
}


6 Risposte

  • Ciao,

    Che cosa intendi con \"non funziona\"? Si blocca? Da risultati errati?

    Mi pare che l'unica differenza nelle due implementazioni sia nella condizione di terminazione della seconda for (j<n-i e j<n-1-i rispettivamente).

    Ciaociao
  • Il primo lo ordina in tutti i casi
    il secondo invece da risultati errati

    eppure l'algoritmo è uguale....

    quindi stavo pensando nn è che c'è un errore di passagio di parametri alla procedura quindi dovrei capire bene il passaggio per indirizzo con il puntatore?

    la ringrazio se può essermi d'aiuto
  • Quel meno un è di grande inportanza serve solo per risparniare un confronto inutile, è stata una mia dimenticanza nel riportare i codici di come li avevo scritti...ed era una prova.
    quindi senza sottoproframma mi funziona sia con -1 che senza;

    e anche scrivendo gli algoritmi uguali con il sottoprigramma mid a ancora risultati sballati
  • Scusa altro errore di digitazione

    il meno1 \"NON è di grande importanza\"
  • Ciao,

    Lol... ho dovuto testare il programma...
    Soluzione: ti sei dimenticato le graffe nella if interna alla seconda for nella versione con il sottoprogramma... in versione debug il programma crashava proprio...

    ciaociao
  • È vero grazie mille
Devi accedere o registrarti per scrivere nel forum
6 risposte