Visualizzazione dei risultati da 1 a 9 su 9

Discussione: C++ funzioni?!

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    21

    C++ funzioni?!

    Salve. potete correggermi questo esercizio? In pratica devo creare una funzione che mi ordini un vettore, il problema è che poi non lo riesco a stampare in modo ordinato, una volta inseriti gli elementi del vettore non mi stampa niente.
    #include <iostream>
    using namespace std;
    int vet[5],n,i=0,t;
    void ordinamento(int n)
    {
    bool s;
    do{
    s=false;
    for(i=0;i<n;i++)
    {
    if(vet[i]>vet[i+1])
    {
    t=vet[i];
    vet[i]=vet[i+1];
    vet[i+1]=t;
    s=true;
    }
    }
    }while(s==true);
    for(i=0;i<n;i++)
    {
    cout<<vet[i]<<endl;
    }
    }


    int main()
    {
    do{
    cout<<"Inserisci n: (n<=5)";
    cin>>n;
    }while(n>5);
    for(i=0;i<n;i++)
    {
    cout<<"Inserisci elemento di posizione: "<<i<<endl;
    cin>>vet[i];
    }


    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    22
    Non ho controllato se la funzione funziona, ma di sicuro non funziona se non la chiami

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da ANDPRI Visualizza il messaggio
    Non ho controllato se la funzione funziona, ma di sicuro non funziona se non la chiami
    Il ragionamento non fa una piega ... :-)

    Comunque, la for dell'ordinamento va cambiata in

    for(i=0;i<n-1;i++)
    Ultima modifica di oregon; 04-05-2017 a 23:52
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    22
    Beh comunque l'ho appena provata e ora ti posso dire che funziona, ma a metà, perché alla fine, con l'ultimo valore assunto da i (che sarebbe n-1), tu controlli se vet[i]>vet[i+1] ma questo lo fa uscire fuori dal limite dell'array e sballa tutto. Se non fosse per quello dovrebbe funzionare. Infatti quando cerco di ordinare 3,5,1,2,4, viene fuori 0,1,2,3,4. Comunque il ragionamento che hai fatto è davvero contorto, ci ho messo un po' a capirlo

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Perché contorto? E' il classico bubble sort ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    22
    Allora sarà contorto solo per me, magari in realtà quello contorto sono io, ho pensato a un modo diverso e a questo non ci avrei mai pensato

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da ANDPRI Visualizza il messaggio
    Allora sarà contorto solo per me, magari in realtà quello contorto sono io, ho pensato a un modo diverso e a questo non ci avrei mai pensato
    Hai studiati gli algoritmi di ordinamento?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    22
    Mi sono limitato a trovare un modo da solo, ieri

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Quote Originariamente inviata da ANDPRI Visualizza il messaggio
    Mi sono limitato a trovare un modo da solo, ieri
    Ok, ma gli algoritmi standard vanno studiati comunque ...

    Fra l'altro la libreria del C prevede la quicksort già implementata

    http://www.cplusplus.com/reference/cstdlib/qsort/
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.