Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    66

    selection sort in funzione c++

    Salve a tutti, domani avrò un esame di infromatica ed ho bisogno di alcune funzioni tra le quali il selection sort, ho questo algoritmo ma non riesco a capire come passarlo in funzione..

    #include<stdio.h>
    #define N 100
    main()
    {
    int n,i,min,p,j,a[N];
    printf("Questo programma mette in ordine crescente gli n valori del vettore\n n=");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    printf("La sequenza ordinata e':");
    for(i=0;i<=n-1;i++)
    {
    min=a[i];
    p=i;
    for(j=i+1;j<n;j++)
    {
    if(min>a[j])
    {
    min=a[j];
    p=j;
    }

    }
    a[p]=a[i];
    a[i]=min;
    printf("\n%d\n",a[i]);
    }
    system("pause");
    }
    attendo vostre risposte grazie mille!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    ma non riesco a capire come passarlo in funzione..
    Cioè cosa intendi? Scrivere una funzione che esegua l'ordinamento?
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    66
    una funzione ke poi venga ad essere richiamata nel main per effettuare l'ordinamento.. nn so se mi sn spiegata..

  4. #4

    Re: selection sort in funzione c++

    Originariamente inviato da sangi89
    Salve a tutti, domani avrò un esame di infromatica
    hm.. domani non è festivo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Ma in ogni caso se hai un esame forse sarebbe meglio se ti sforzassi di riuscirci da sola... non è difficile,

    In main() va creato l'array, poi va chiamata una funzione che riceve in input quest'array con il suo numero di elementi, e all'interno della funzione ci scrivi tutto il codice per l'ordinamento, avendo cura di dichiarare i vari indici e variabili di appoggio al suo interno e di eliminarli da main()... sarebbe anche carino eliminare la stampa da quel ciclo for e scrivere un ultimo for stesso in main() dopo la chiamata a questa funzione che stampi l'array ordinato.

    Comunque se non mi sbaglio questo ciclo for

    for(i=0;i<=n-1;i++)

    può essere anche scritto con <, cioè non con <= perché iterando sempre la ricerca del minimo ad ogni passo e lo scambio alla fine l'ultimo elemento dell'array sarà necessariamente il massimo, e non ci sarà bisogno di ciclare ulteriormente (piccola finezza, nulla di importante...)
    every day above ground is a good one

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    66
    io infatti avevo fatto così:

    #include<stdio.h>
    #define N 100

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

    }
    return a[i];
    }
    }


    main()
    {
    int n,i,a[N];
    printf("Questo programma mette in ordine crescente i valori assegati ad un vettore\n");
    printf("Quanti valori vuoi ordinare?\n");
    scanf("%d",&n);
    printf("Inserscili\n");
    /*ciclo for per inserire gli n valori*/
    for(i=0;i<n;i++)
    scanf("%d",&a[i]);
    printf("La sequenza ordinata e':");
    a[i]= bubble(a,n);
    printf("\n%d\n",a[i]);

    system("pause");
    }
    ma mi restituisce solo il primo valore...

    (cmq intendevo il domani accademico, mercoledì)

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.