Ordinamento Array

di il
8 risposte

Ordinamento Array

Ciao a tutti!
Sono nuovo del forum (anche se vi seguo già da un po'!), sto imparando a programmare perchè ho sempre desiderato farlo e perchè ho "Programmazione in C" come corso universitario!
Sto facendo esercizi in preparazione dell'esame, ma sono incappato in un problema che a prima vista mi sembra banale ma che non riesco a risolvere nonostante abbia già speso varie ore per uscire dalla buca in cui mi sono infilato.
Devo ordinare in ordine crescente un array di dimensione N contenente dei valori numerici.
Ho visto già diverse soluzioni, ma quello che mi interessa è capire perchè NON funziona il programma che ho scritto, così da imparare dai miei errori.
Il programma dopo aver ricevuto i dati dall'utente li mette in un vettore, stampa quello che è stato immesso e poi dovrebbe stampare i dati numerici ordinati dal minore al maggiore. Invece mi ristampa ancora il vettore come l'ho immesso, senza nessun ordinamento o scambio!
Vi copio qui sotto il mio programma, ringrazio chiunque riuscirà a darmi una mano. Siete grandissimi e vi stimo moltissimo!! =)
(Modificato per essere più leggibile!)
/*Questo programma analizza una serie di N numeri e li mette in ordine crescente con N definito dal programmatore.*/
#include <stdlib.h>
#include <stdio.h>

#define N 5


int main()
{
	printf("Inserisci %d numeri interi, li metterò in ordine crescente!\n", N);
	int i;
	int v[N];
	for ( i = 0 ; i < N ; i++ )
	{
		scanf("%d", &v[i]);
	}
	printf("I numeri da te inseriti sono: ");
	for ( i = 0 ; i < N ; i++ )
	{
		printf("%d ", v[i]);
	}
	printf("\n");
	int j;
	int w;
	for ( i = 0 ; i < N - 1 ; i++ );
	{
		for ( j = i + 1 ; j < N ; j++ )
		{
			if ( v[j] < v[i] )
			{
				w = v[j];
				v[j] = v[i]; 
				v[i] = w; 
			}
		}
	}				
	printf("Lo scambio è stato effettuato: ");
	for ( i = 0 ; i < N ; i++ )
	{
		printf("%d ", v[i]);
	}
	printf("\n");
	

exit(EXIT_SUCCESS);
}

8 Risposte

  • Re: Ordinamento Array

    Errore da principianti ma che e' complicato da trovare anche per i superesperti

    Ti dico solo questo: c'e' un PUNTO E VIRGOLA dove non dovrebbe esserci
  • Re: Ordinamento Array

    Accidenti che errore da novellino di primissimo pelo!!
    Quindi il programma era giustissimo e mi sono scervellato per ore nel tentativo di capire dove avessi sbagliato senza individuare un banalissimo errore di sintassi e sbadataggine! Che rimbambito! XD
    Con il -Wall nella compilazione, se non mi restituisce errori, penso di andare sul sicuro (sbagliando) che non ci siano!

    Ti ringrazio tantissimo!
  • Re: Ordinamento Array

    Comunque, ti consiglio di dichiarare tutte le variabili all'inizio del main, e non qua e la come hai fatto con j e w.
    I primi standard del c consideravano errore anche quello, e solitamente non è ben visto all'università.

    ciao
  • Re: Ordinamento Array

    Scusate se mi intrometto... Punto e virgola trovato! Però mi sembra di aver capito che il programma venga eseguito.. Mentre il compilatore dovrebbe dare errore impedendo l'esecuzione del programma! Comunque se vuoi un consiglio per rendere tutto più leggibile cerca di utilizzare delle funzioni!!
  • Re: Ordinamento Array

    Vi ringrazio per tutti i vostri consigli.

    dvaosta ha scritto:


    Comunque, ti consiglio di dichiarare tutte le variabili all'inizio del main, e non qua e la come hai fatto con j e w.
    I primi standard del c consideravano errore anche quello, e solitamente non è ben visto all'università.

    ciao
    Effettivamente scrivendo il programma "di getto" ho messo le variabili dove erano più comode da digitare e (nel caso) cancellare con pochi tocchi sulla tastiera o del mouse. Lo posso fare, ma alla fine devo rendere tutto più leggibile e quindi come dici tu è meglio metterle tutte all'inizio.

    gaab ha scritto:


    Scusate se mi intrometto... Punto e virgola trovato! Però mi sembra di aver capito che il programma venga eseguito.. Mentre il compilatore dovrebbe dare errore impedendo l'esecuzione del programma! Comunque se vuoi un consiglio per rendere tutto più leggibile cerca di utilizzare delle funzioni!!
    Concordo e sarà fatto! Non sentendomi ancora così sicuro nel usare il codice per ora mi sono limitato a fare tutto in main. Ma decisamente si, devo utilizzare le funzioni!


  • Re: Ordinamento Array

  • Re: Ordinamento Array

    gaab ha scritto:


    Scusate se mi intrometto... Punto e virgola trovato! Però mi sembra di aver capito che il programma venga eseguito.. Mentre il compilatore dovrebbe dare errore impedendo l'esecuzione del programma! Comunque se vuoi un consiglio per rendere tutto più leggibile cerca di utilizzare delle funzioni!!
    Il compilatore non da errori perché in c, così come ad esempio in java, puoi delimitare blocchi di codice con { } anche se le parentesi non si riferiscono a nessun costrutto if, for ecc. In java serve per creare gli inizializzatori, ovvero blocchi di codice eseguiti prima del costruttore (non entriamo nei dettagli), mentre in c servono per lo più per dare scope locale alle variabili al loro interno.

    Quindi quel ; viene interpretato come l'unica istruzione (vuota) all'interno del for, dopodiché viene eseguito (1 unica volta) il blocco tra parentesi.
  • Re: Ordinamento Array

    Ok tutto chiaro... Era un fondamento che mi mancava
    ..grazie mille!
Devi accedere o registrarti per scrivere nel forum
8 risposte