Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [C++] Problema con il programma "selection sort"

    Salve a tutti!! Mi chiamo Francesco e mi sono appena iscritto al forum..
    A breve ho l'esame di informatica e mi esercitavo con un programma per ordinare un vettore acquisito: in poche parole creo un array, fornisco gli elementi dell'array e devo ordinarli in ordine crescente con il selection sort ovvero per minimi successivi..

    questo è il programma che ho fatto (uso il Dev-C 5.0 perchè questo usiamo all'esame):

    [ CODE]

    #include <iostream>
    #include <cstdlib>

    using namespace std;
    const int dim=100;

    void selection (int a[], int n ) {

    int vettore[dim];
    int i, j;
    int minimo;
    int temp;

    cout<<"Inserisci la lunghezza del vettore: " << endl;
    cin>>n;

    for (i=0; i<n; i++) {
    cout<<"Inserisci gli elementi del vettore: " <<endl;
    cin>> vettore[i];
    cout<< endl;
    }

    for (i=0; i<n; i++) {
    minimo=i;
    for (j=i+1; j<n; j++)
    if (a[j]<a[minimo])
    minimo=j;
    temp = a[i];
    a[i] = a[minimo];
    a[minimo] = temp;
    }
    system ("PAUSE");
    }

    [/ CODE]

    Compilo ed eseguo e ovviamente mi da come errore: [Linker error] undefined reference to 'WinMain@16' .
    (Forse mi sono dimenticato di dirvelo ma di programmazione non capisco un H, prima volta in vita mia °_° ).
    Così arrabbiato come una bestia inizio a girare il web alla ricerca di risposte, e trovo la soluzione: colpa della mancanza del main!!
    Così ricambio il codice sostituendo "void selection (int a[], int n ) {" (che era sugli appunti del prof tra l'altro -.- ) con "void main (int a[], int n ) {"
    Lo compila e lo esegue!!
    Inserisco lunghezza ed elementi del vettore..e puf.. errore e si blocca -.- (il classico errore di windows, quando dice ke l'applicazione non risponde e sarà terminata)..
    Come posso risolvere? è un problema del mio pc o è qualcosa nel programma che è sbagliato e lo fa bloccare?

    Volendo poi stampare a video il vettore ordinato è sufficiente aggiungere alla fine un ciclo for del tipo:
    for (i=0; i<n; i++)
    cout<< vettore[i];

    Vi prego aiutatemi (

  2. #2
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Intanto togli quel system("pause")...

    Cosi' ad occhio mi sembra che l'efficientissimo selection sort sia scritto correttamente.

    P.S.: faresti meglio a creare (Cosi' come ti ha detto il prof) una procedura void selection (int a[], int n ) che poi chiamerai come piu' credi opportuno dal main del programma (Passandogli i parametri letti da STDIN).
    Nella procedura potrai quindi "isolare" l'algoritmo vero e proprio mentre l'interazione con STDIN e la visualizzazione del vettore su STDOUT verranno effettuae, appunto, nel main.

  3. #3
    Potresti scrivere la parte del codice in cui usi sia il void selection ke il main, xkè nn saprei proprio come fare..
    come mai mi dici di togliere il system ("PAUSE")? da problemi?

  4. #4

    Re: [C++] Problema con il programma "selection sort"

    Originariamente inviato da SongokuSSj5
    Così ricambio il codice sostituendo "void selection (int a[], int n ) {" (che era sugli appunti del prof tra l'altro -.- ) con "void main (int a[], int n ) {"
    Lo compila e lo esegue!!
    Inserisco lunghezza ed elementi del vettore..e puf.. errore e si blocca -.- (il classico errore di windows, quando dice ke l'applicazione non risponde e sarà terminata)..
    Come posso risolvere? è un problema del mio pc o è qualcosa nel programma che è sbagliato e lo fa bloccare?
    la tua main è sbagliata:
    http://en.wikipedia.org/wiki/Main_fu...#C_and_C.2B.2B

    Cosa ti aspetti che contengano il vettore di interi a e l'intero n? Senza troppi giri di parole hanno un contenuto quasi indefinito (certamente indefinito per l'uso che tu ne fai), ed è quindi giusto che il programma abbia un comportamento indefinito, che nel tuo caso fortunatamente si risolve in un semplice crash dello stesso.

  5. #5
    E come dovrei cambiarlo? potresti darmi una mano?

  6. #6
    Originariamente inviato da SongokuSSj5
    E come dovrei cambiarlo? potresti darmi una mano?
    Incomincia a cambiare il prototipo della main, in modo conforme, a quanto ben descritto, al link che ti ho mandato.

  7. #7
    se metto:

    int main (int a[], int n) { va bene? xkè mi si blocca cmq..

  8. #8
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da SongokuSSj5
    se metto:

    int main (int a[], int n) { va bene? xkè mi si blocca cmq..
    Rileggiti bene il msg che ti ho scritto sopra.

    Crea una procedura cosi' come ti ha indicato il prof.

    Dal tuo main (int main()) la chiami, poi, passandole i parametri che acquisisci da STDIN.

    E alla fine stampi, sempre nel main, il vettore ordinato.

  9. #9
    Il fatto è che un procedura "void selection (int a[]. int n )" non so proprio come crearla..so pochissimo di programmazione..Se avete tempo e potete scrivere voi il pezzo di codice che manca o quello corretto vi sono immensamente grato

  10. #10
    Originariamente inviato da SongokuSSj5
    se metto:

    int main (int a[], int n) { va bene? xkè mi si blocca cmq..
    No non va bene. E' ben spiegato al link che ti ho segnalato.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.