Date un occhio a questo programma di ordinamento array

di
Anonimizzato3282
il
6 risposte

Date un occhio a questo programma di ordinamento array

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

  • Re: Date un occhio a questo programma di ordinamento array

    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
  • Re: Date un occhio a questo programma di ordinamento array

    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
  • Re: Date un occhio a questo programma di ordinamento array

    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
  • Re: Date un occhio a questo programma di ordinamento array

    Scusa altro errore di digitazione

    il meno1 \"NON è di grande importanza\"
  • Re: Date un occhio a questo programma di ordinamento array

    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
  • Re: Date un occhio a questo programma di ordinamento array

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