RISOLTO devo mettere i quattro numeri in ordine decrescente, ma non riesco ad andare avanti.

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Embeh come pensi di ordinare qualcosa se non fai dei confronti? Con qualche confronto ordini quei 4 numeri senza menartela con cicli for o sort vari.
Visto che ad occhio l'OP, non solo non ha fatto gli array, ma probabilmente neanche i cicli for.
E come implementazione del bubble sort lascia pure a desiderare.
Era quello che ho detto pure io fin dall'inizio.. entrambe le cose!

...e già che ci sono, quoto pure quanto sotto spoiler!

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
Embeh come pensi di ordinare qualcosa se non fai dei confronti? Con qualche confronto ordini quei 4 numeri senza menartela con cicli for o sort vari.
Visto che ad occhio l'OP, non solo non ha fatto gli array, ma probabilmente neanche i cicli for.
E come implementazione del bubble sort lascia pure a desiderare.
Siete fuori tema tutti e due, le scansioni sono necessarie ma il punto non è fare solo quelle come ho già detto, ma ordinare. Ordinare in inglese ignifica significa sorting, ed è quello che ha chiesto. Poi se avesse fatto o no quelle cose è meglio che le impari invece di utilizzare metodi grossolani e che non sono ciò che realmente è stato chiesto.
Dato che è già stato preso di esempio quello di selezione, ho deciso di trattare singolarmente bubble sort.
Invece di dire che è scadente, accoglierei bene ogni miglioramento consigliato, elaborate in quanto non state facendo niente per @OP. Lo pseudocodice mostrato non è inoltre ottimizzato, come è scritto in chiaro.
 
Esempio per 3 variabili. Ritorna i 3 numeri ordinati (crescente). Senza usare fantomatici ordinamenti, scusa, "sorting". Funziona? Si. E' orribile? A voja. E se l'op fosse proprio all'inizio e fosse un esercizio per capire gli if? Ricordo di aver fatto un esercizio del genere agli inizi.
Codice:
if(n1<n2)
        if(n2<n3) printf("%i %i %i", n1, n2, n3);
        else
            if(n1<n3) printf("%i %i %i", n1, n3, n2);
            else printf("%i %i %i", n3, n1, n2);
    else
        if(n1<n3) printf("%i %i %i", n2, n1, n3);
        else
            if(n2<n3) printf("%i %i %i", n2, n3, n1);
            else printf("%i %i %i", n3, n2, n1);
E il bubble sorting proposto è sempre O(n^2)..
 
Personalmente sono d'accordo con @nullptr, meglio spiegare gli algoritmi di ordinamento, così in futuro quando avrà più numeri non si confonderà e non chiederà più aiuto, ma lo saprà fare da solo
 
Ma qui non siamo a fare lezioni di informatica. Visto che all'OP è ormai evidente che non gliene frega niente, da come ha posto la domanda e impostato furbescamente le quattro righe di codice, è chiaro che ha delle conoscenze molto limitate. Di conseguenza è molto più propedeutico limitare il discorso al semplice procedimento logico con cui individuare le differenze di valori contenuti nelle variabili.
Mi dispiace che vogliate approfittare di situazioni così banali per dare sfoggio di sapienze (che tali neppure sono, visto che il codice per un programmino di ordinamento lo si trovava pure in un libro di scuola media quando le ho fatte io, 35 anni fa) e addirittura inalberarsi nel criticare gli altri per poi voler fare gli "educatori".. perfino la spiegazione etimologica!!!

Mi dispiace, ma questione la vedo in modo molto più elementare. Io ho insistito nell'utilizzare semplicemente le variabili introdotte dall'OP, anziché i vettori e di fare un ordinamento per confronti diretti di queste. Se la si vuole prendere come "provocazione", mi piacerebbe vedere un codice abbastanza elegante e originale per fare ciò.. invece delle solite cose!

Sono stato pure tentato di dare qualche spunto all'OP, ma poi ho visto che è scomparso. In compenso è arrivato uno a spiegarmi l'ordinamento bubble sort.. mecojoni!

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
Esempio per 3 variabili. Ritorna i 3 numeri ordinati (crescente). Senza usare fantomatici ordinamenti, scusa, "sorting". Funziona? Si. E' orribile? A voja. E se l'op fosse proprio all'inizio e fosse un esercizio per capire gli if? Ricordo di aver fatto un esercizio del genere agli inizi.
Codice:
if(n1<n2)
        if(n2<n3) printf("%i %i %i", n1, n2, n3);
        else
            if(n1<n3) printf("%i %i %i", n1, n3, n2);
            else printf("%i %i %i", n3, n1, n2);
    else
        if(n1<n3) printf("%i %i %i", n2, n1, n3);
        else
            if(n2<n3) printf("%i %i %i", n2, n3, n1);
            else printf("%i %i %i", n3, n2, n1);
E il bubble sorting proposto è sempre O(n^2)..
Questa è esilerante, e non scherzo: è pure sbagliato e l’hai calcato di errori sintattici (e sicuramente logici), se metti un altro po’ di impegno e riesci possibilmente a scrivere un codice spaghetti. Fratello, non si programma così, non è mica un esercizio fondato sugli if, else e printf(). Invece di ordinare stai solo stampando roba a caso, se pensi davvero che questa sia una soluzione tanto vale che gli consigli di fare due 2 printf() in cui scrive i numeri non ordinati e poi quelli ordinati (ovviamente da lui).


E il bubble sorting proposto è sempre O(n^2)..


Sei riuscito a leggere su Wikipedia, facendo cilecca e rivelando di non sapere nemmeno di cosa si stia parlando. L'efficienza del bubble sorting non è O(n^2), anzi la fonte mette in chiaro che quella è concernente al caso medio-peggiore (scambi e confronti) in runtime di bubble sort.

E non può essere nemmeno “sempre” O(n^2) in quanto può l’efficacia dell’algoritmo muterebbe soprattutto per il numero di elementi da scambiare. Bubble Sort va benissimo pure in questo caso, per la sua candidezza e semplicità nell’implementazione, e facile per una piccola quantità di set di dati, e oserei specificare che vada benissimo per una quantità di elementi da scambiare inferiori a 100. Nel peggior dei casi la complessità semmai diventerebbe n*(n-1)/2 quando si ordina in senso contrario.

Inoltre mi hai detto che il codice che ho scritto lascia a desiderare: hai giudicato ma non hai consigliato cosa si avrebbe potuto perfezionare (ogni consiglio è ben accetto, ognuno è qui per imparare e se avete da dire ben venga).

Ma qui non siamo a fare lezioni di informatica. Visto che all'OP è ormai evidente che non gliene frega niente, da come ha posto la domanda e impostato furbescamente le quattro righe di codice, è chiaro che ha delle conoscenze molto limitate

La discussione è stata scritta ieri, dovresti “curare” un po’ di più la concezione del tempo. Le risposte mie sono rivolte all’OP, e anche se fosse che se ne infischi, questi sono tutti contenuti utili per qualsiasi visitatore anche non registrato, nessun altro stava cercando di insegnare a te visto che dici di saper già tutto (anche che se era vero non proponevi quella bruttura), quindi fa finta che il mio “insegnamento” o “lezione di informatica” non esiste, per te.

Inoltre ricordati che nessuno è nato imparato, nè io, nè tu e nè tutti gli altri, quantomeno eviterei fossi in te di sbandierare le capacità che dici di avere.

Di conseguenza è molto più propedeutico limitare il discorso al semplice procedimento logico con cui individuare le differenze di valori contenuti nelle variabili.
Mi dispiace che vogliate approfittare di situazioni così banali per dare sfoggio di sapienze (che tali neppure sono, visto che il codice per un programmino di ordinamento lo si trovava pure in un libro di scuola media quando le ho fatte io, 35 anni fa) e addirittura inalberarsi nel criticare gli altri per poi voler fare gli "educatori".. perfino la spiegazione etimologica!!!
Ripeto che la soluzione che proponi non è nè propedeutica nè appartenente al sorting. Ah, le spiegazioni “così banali” che dici di aver studiato alle medie (Bubble Sort) vanno studiate a livello universitario e in modo molto minuzioso. Forse hai pure dimenticato la classe di quando all’incirca l’hai “studiata”.

La cosa che mi dà più fastidio è che se io fossi stato completamente impreparato (come qualunque altro essere umano) in questa materia avrei raccattato davvero tanta confusione per la vostra voglia di passare la misura nei dibattiti, mostrando di sapere ciò che non sapete e senza accettare le critiche, che sono giustificate in quanto avete mostrato da soli che la vostra soluzione è obbrobrio.

Sapete qual è la verità, @rodhellas @rctimelines? State solo cercando di balzare sugli occhi della gente con soluzioni che sono insignificanti, non state/avete aiutato nessuno, state portando flame inutile, disinformazione e non avete postato una parola/riga di codice serio.
 
Questa è esilerante, e non scherzo: è pure sbagliato e l’hai calcato di errori sintattici (e sicuramente logici), se metti un altro po’ di impegno e riesci possibilmente a scrivere un codice spaghetti. Fratello, non si programma così, non è mica un esercizio fondato sugli if, else e printf(). Invece di ordinare stai solo stampando roba a caso, se pensi davvero che questa sia una soluzione tanto vale che gli consigli di fare due 2 printf() in cui scrive i numeri non ordinati e poi quelli ordinati (ovviamente da lui).





Sei riuscito a leggere su Wikipedia, facendo cilecca e rivelando di non sapere nemmeno di cosa si stia parlando. L'efficienza del bubble sorting non è O(n^2), anzi la fonte mette in chiaro che quella è concernente al caso medio-peggiore (scambi e confronti) in runtime di bubble sort.

E non può essere nemmeno “sempre” O(n^2) in quanto può l’efficacia dell’algoritmo muterebbe soprattutto per il numero di elementi da scambiare. Bubble Sort va benissimo pure in questo caso, per la sua candidezza e semplicità nell’implementazione, e facile per una piccola quantità di set di dati, e oserei specificare che vada benissimo per una quantità di elementi da scambiare inferiori a 100. Nel peggior dei casi la complessità semmai diventerebbe n*(n-1)/2 quando si ordina in senso contrario.

Inoltre mi hai detto che il codice che ho scritto lascia a desiderare: hai giudicato ma non hai consigliato cosa si avrebbe potuto perfezionare (ogni consiglio è ben accetto, ognuno è qui per imparare e se avete da dire ben venga).



La discussione è stata scritta ieri, dovresti “curare” un po’ di più la concezione del tempo. Le risposte mie sono rivolte all’OP, e anche se fosse che se ne infischi, questi sono tutti contenuti utili per qualsiasi visitatore anche non registrato, nessun altro stava cercando di insegnare a te visto che dici di saper già tutto (anche che se era vero non proponevi quella bruttura), quindi fa finta che il mio “insegnamento” o “lezione di informatica” non esiste, per te.

Inoltre ricordati che nessuno è nato imparato, nè io, nè tu e nè tutti gli altri, quantomeno eviterei fossi in te di sbandierare le capacità che dici di avere.


Ripeto che la soluzione che proponi non è nè propedeutica nè appartenente al sorting. Ah, le spiegazioni “così banali” che dici di aver studiato alle medie (Bubble Sort) vanno studiate a livello universitario e in modo molto minuzioso. Forse hai pure dimenticato la classe di quando all’incirca l’hai “studiata”.

La cosa che mi dà più fastidio è che se io fossi stato completamente impreparato (come qualunque altro essere umano) in questa materia avrei raccattato davvero tanta confusione per la vostra voglia di passare la misura nei dibattiti, mostrando di sapere ciò che non sapete e senza accettare le critiche, che sono giustificate in quanto avete mostrato da soli che la vostra soluzione è obbrobrio.

Sapete qual è la verità, @rodhellas @rctimelines? State solo cercando di balzare sugli occhi della gente con soluzioni che sono insignificanti, non state/avete aiutato nessuno, state portando flame inutile, disinformazione e non avete postato una parola/riga di codice serio.
Concordo con tutto quello che hai detto , questo è appunto un forum , una community. Nella community non esiste solo il classico operatore che fa la domanda e riceve la pappa pronta , quella pappa pronta deve essere utile per tutti , altrimenti si creerebbero 100 post tutti uguali ...
Quindi se l'op in questione è occupato per studiare o per altro , aspettiamo un suo riscontro , nel caso lo voglia fare con i vettori , come dicevo io dall'inizio e nullptr , ben venga , se lo vuole fare senza vettori problemi suoi , il codice sarà meno leggibile.
Detto questo non ha importanza fare flame in questo post , tra l'altro nessuno va contro nessuno , siamo qui per aiutare e ognuno la pensa in modo diverso . Quindi è meglio radunare le idee ed esporle all'op quando si farà sentire cosi da aiutarlo.
Detto questo , @rctimelines come hai visto non ho detto solo io fallo col vettore , ma tutti quelli che hanno risposto , poi ok li confonti , poi non li riordini ?
 
Questa è esilerante, e non scherzo: è pure sbagliato e l’hai calcato di errori sintattici (e sicuramente logici), se metti un altro po’ di impegno e riesci possibilmente a scrivere un codice spaghetti. Fratello, non si programma così, non è mica un esercizio fondato sugli if, else e printf(). Invece di ordinare stai solo stampando roba a caso, se pensi davvero che questa sia una soluzione tanto vale che gli consigli di fare due 2 printf() in cui scrive i numeri non ordinati e poi quelli ordinati (ovviamente da lui).
Mi dica gli errori allora, le parentesi? E come ho già detto è un codice orribile.

Sei riuscito a leggere su Wikipedia, facendo cilecca e rivelando di non sapere nemmeno di cosa si stia parlando. L'efficienza del bubble sorting non è O(n^2), anzi la fonte mette in chiaro che quella è concernente al caso medio-peggiore (scambi e confronti) in runtime di bubble sort.

E non può essere nemmeno “sempre” O(n^2) in quanto può l’efficacia dell’algoritmo muterebbe soprattutto per il numero di elementi da scambiare. Bubble Sort va benissimo pure in questo caso, per la sua candidezza e semplicità nell’implementazione, e facile per una piccola quantità di set di dati, e oserei specificare che vada benissimo per una quantità di elementi da scambiare inferiori a 100. Nel peggior dei casi la complessità semmai diventerebbe n*(n-1)/2 quando si ordina in senso contrario.

Inoltre mi hai detto che il codice che ho scritto lascia a desiderare: hai giudicato ma non hai consigliato cosa si avrebbe potuto perfezionare (ogni consiglio è ben accetto, ognuno è qui per imparare e se avete da dire ben venga).
Mi sto riferendo al tuo bubble "ordinare". A cui potevi aggiungere una variabile booleana per evitare ulteriori cicli se l'array fosse già ordinato. E comunque, il giudizio su di un algoritmo è dato dal suo caso peggiore, che nel bubble "ordinare" è n^2. n*(n-1)/2 è il numero medio di confronti, che non corrisponde alla complessità di un algoritmo (visto che è temporale o spaziale).
Prima di giudicare le conoscenze altrui, dovresti prima presentarti e rendere note le tue competenze.

Sapete qual è la verità, @rodhellas @rctimelines? State solo cercando di balzare sugli occhi della gente con soluzioni che sono insignificanti, non state/avete aiutato nessuno, state portando flame inutile, disinformazione e non avete postato una parola/riga di codice serio.
Ovviamente sono soluzioni insignificanti e non serie per un qualsiasi programmatore, ma sai quante domande identiche ci sono sul forum? E come vengono sempre risposte? Con un qualche algoritmo di "ordinare" e relativa spiegazione. Questo poteva essere un bel esercizio per smanettare con if e confronti vari (visto che l'op ha postato un altro esercizio sempre sull'uso degli if).
 
Ultima modifica:
@nullprt . Mi chiedo quale problema ti rode così tanto. Ma pensare ai "casi" tuoi e finirla lì invece di tirare e punzecchiare gli altri?

Se, insieme a @Lupen03 volete fare lezioni di informatica, potete chiedere di pubblicare delle sezioni apposite. Apri un post dedicato ai metodi di ordinamento, che tu hai studiato all'università!

Sei pure nuovo in questo forum, impara le regole di base, quelle non scritte, ma che sono la base di comunicazioni telematiche forum, chat, newsletter e BBS... leggi, impara, prendi le misure e intervieni con discrezione. Leggere (e scrivere, soprattutto) pagine e pagine di sfoghi alla frustrazione non vanno bene. Accetta anche tu le opinioni degli altri e non creare fazioni tra gli utenti; meriteresti anche tu un richiamino.. @BAT00cent (?)


Per me la questione tanto vituperata è chiusa.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
Caro @rctimelines, @OP ha chiaramente chiesto di voler ordinare, non confrontare gli elementi. Perciò la tua risposta è totalmente fuori-luogo, come tra l'altro tutte le altre tue risposte in questa sezione.
@nullptr
Sebbene @rctimelines sia spesso "sbrigativo", le tue risposte sono sgradevoli: impossibile non vedere astio nei tuoi commenti, mi pare che tu ti sia iscritto al forum appositamente per prenderlo di mira.
Tra l'altro, la tua precisazione ordinare/confrontare è inutile: non vedo come tu possa ordinare un array senza confrontarne gli elementi...

Quando non sei d'accordo con qualcuno, non è necessario essere supponenti, per esempio riguardati questo post: hai preso una cantonata bella grossa con l'append in Python, ma nel mio ultimo intervento mi sono limitato a citarti ed a precisare.
Invece i toni saccenti ed arroganti rendono sgradevoli le discussioni: ma su un esercizio banale come questo è necessario dar sfoggio di "sapienza"? Correggere un errore grossolano va bene, suggerire una soluzione più "furba" pure, ma NON trascendiamo: questo è un forum, non un'aia con oche che litigano per una briciola di pane.
 
@nullprt . Mi chiedo quale problema ti rode così tanto. Ma pensare ai "casi" tuoi e finirla lì invece di tirare e punzecchiare gli altri?

Se, insieme a @Lupen03 volete fare lezioni di informatica, potete chiedere di pubblicare delle sezioni apposite. Apri un post dedicato ai metodi di ordinamento, che tu hai studiato all'università!

Sei pure nuovo in questo forum, impara le regole di base, quelle non scritte, ma che sono la base di comunicazioni telematiche forum, chat, newsletter e BBS... leggi, impara, prendi le misure e intervieni con discrezione. Leggere (e scrivere, soprattutto) pagine e pagine di sfoghi alla frustrazione non vanno bene. Accetta anche tu le opinioni degli altri e non creare fazioni tra gli utenti; meriteresti anche tu un richiamino.. @BAT00cent (?)


Per me la questione tanto vituperata è chiusa.

Inviato dal mio Nexus 6P utilizzando Tapatalk

Io non faccio lezioni a nessuno , ma non mi sta bene che ogni volta mi devi correggere senza motivo.
 
@Mursey
se posso, suggerisco di attendere fino a fine di questa giornata per vedere se l'autore della discussione interviene, e poi chiudere questa discussione che è ormai diventata ridicola.
 
Sicuramente si tratta della consegna (fornita attraverso una piattaforma didattica online) di un insegnante di Informatica in un liceo scientifico opzione scienze applicate o in un istituto tecnologico ad indirizzo "Informatica e Telecomunicazioni" :sisi:
Solitamente in questa fase del programma didattico, visto che parliamo di strutture di dati, il discente conosce le strutture di controllo di base, lo sviluppo top-down, le procedure e le funzioni, lo "scope" delle variabili e il passaggio dei parametri per referenza e per valore (faccio riferimento a Pascal/Delphi ma ovviamente parliamo di programmazione strutturata che vale anche per il C e per Python) o perlomeno questa è la sequenza di fasi da me suggerita per lo studio ma effettivamente l'algoritmo, essendo pochi gli oggetti, si presta ad una "implementazione" che utilizza i soli costrutti di base e quindi non saprei dire con certezza :look:
Venendo ora alla questione posta dall'apertore, oltre al già citato metodo di ordinamento tramite "selezione", un altro metodo "elementare", sicuramente consigliabile nel caso in cui il numero di oggetti da ordinare sia molto piccolo, è quello chiamato "a bolle", il "bubble-sort", largamente citato nella letteratura (citato anche qui), il quale prevede la "scansione" dell'intero array e lo scambio degli elementi adiacenti, a due a due, per ordinarli.
Si possono prevedere tre distinte procedure, una per il caricamento degli elementi nel vettore, una per l'ordinamento vero e proprio e l'ultima per la stampa (a video o cartacea) del vettore ordinato.
A presto ;)
 
Io non faccio lezioni a nessuno , ma non mi sta bene che ogni volta mi devi correggere senza motivo.
Se sono scortese ti chiedo scusa, ma sulle motivazioni magari dovresti riflettere un pochino anziché pensare che siano attacchi gratuiti. Sinceramente mi limito a rispondere al fuoco se vengo attaccato ma per il resto, se vedo qualcosa che non condivido lo dico.
Precisamente: non ce l'ho con te a livello personale.

In tutto ti ho commentato nr.02 volte e sempre per lo stesso motivo: usare un metodo di ordinamento (bubble-sort nella fattispecie) per ordinare vettori di 4 o 5 elementi. Io posso capire che da neofita hai imparato questi metodi, anzi, ti posso anticipare che ne esistono a dozzine e ognuno preferibile all'altro a seconda delle condizioni iniziali. Però dovresti imparare che non si può andare a caccia di farfalle con il bazooka.. devi applicare le tecniche quando sono necessarie.

Inviato dal mio Nexus 6P utilizzando Tapatalk
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top