Aiuto codifica bubble sort C++

MPG

Utente Attivo
544
4
Scusate il prof ha detto di fare riferimento a quanto vi allego per creare un programma con Bubble sort, sono un po' in crisi per come codificarla seguendo queste direttive, mi potete aiutare seguendo queste indicazioni?
Grazie infinite a tutti.
 

Allegati

  • Bubblesort.jpg
    Bubblesort.jpg
    58 KB · Visualizzazioni: 995
Ultima modifica:

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Non mi sembra molto difficile...
C++:
const int n = 10;
int vet[n];

bool nonOrdinato = true;
int stop = n - 1;

while (nonOrdinato)
{
    nonOrdinato = false;
    for (int i = 0; i <= stop; i++)
        if (vet[i] > vet[i + 1])
        {
            swap(vet[i], vet[i + 1]); // std::swap()
            nonOrdinato = true;
        }

    stop -= 1;
}

Ma il professore ve lo ha spiegato? Perché l'implementazione è molto semplice
 

MPG

Utente Attivo
544
4
Ho scritto tutto il codice cosi' ma non viene nulla..Il prof ha detto di studiare quella pseudocodifica e di farlo....
Swap tra l'altro non l'abbiamo mai fatto c'è un modo alternativo? Ho trovato in allegato altro modo per swap cosa ne pensi?

Codice:
#include <iostream>

using namespace std;

int main()
{


const int n = 10;
int vet[n];

bool nonOrdinato = true;
int stop = n - 1;

while (nonOrdinato)
{
    nonOrdinato = false;
    for (int i = 0; i <= stop; i++)
        if (vet[i] > vet[i + 1])
        {
            swap(vet[i], vet[i + 1]); // std::swap()
            nonOrdinato = true;
        }

    stop -= 1;
}
}
 

Allegati

  • Bubblesort swap.jpg
    Bubblesort swap.jpg
    73.5 KB · Visualizzazioni: 144

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
Ho scritto tutto il codice cosi' ma non viene nulla..Il prof ha detto di studiare quella pseudocodifica e di farlo....
Swap tra l'altro non l'abbiamo mai fatto c'è un modo alternativo? Ho trovato in allegato altro modo per swap cosa ne pensi?

Codice:
#include <iostream>

using namespace std;

int main()
{


const int n = 10;
int vet[n];

bool nonOrdinato = true;
int stop = n - 1;

while (nonOrdinato)
{
    nonOrdinato = false;
    for (int i = 0; i <= stop; i++)
        if (vet[i] > vet[i + 1])
        {
            swap(vet[i], vet[i + 1]); // std::swap()
            nonOrdinato = true;
        }

    stop -= 1;
}
}
In che senso non viene nulla? Il codice corretto è quello.
È una funzione che sta nello spazio dei nomi std non devi studiarla per usarla. Esegui semplicemente uno scambio di valori
 

MPG

Utente Attivo
544
4
In pratica con code blocks quando avvio il tutto esce la finestra nera ma non viene fatta nessun ridistribuzione dei numeri a video dal piu' basso al piu' alto...
 

Allegati

  • bubblecodifica.jpg
    bubblecodifica.jpg
    56.4 KB · Visualizzazioni: 131

_Achille

Utente Èlite
3,067
725
CPU
Intel i5-6600K @4.6 GHz
Dissipatore
Cryorig H5
Scheda Madre
ASRock Z170 Extreme 6
HDD
WesternDigital 1TB & Crucial MX200 250GB
RAM
Corsair Ven 16GB DDR4 2133MHz
GPU
Sapphire RX 580 Nitro+
Monitor
Dell S2418H
PSU
RM550X
Case
NZXT S340
Periferiche
Anne Pro 2, Razer Abyssus
OS
Windows 10 Pro
In pratica con code blocks quando avvio il tutto esce la finestra nera ma non viene fatta nessun ridistribuzione dei numeri a video dal piu' basso al piu' alto...
Mi pare ovvio.
Manca l’inserimento dei dati e la stampa. L’implementazione deve essere generica.
Se ti mettevo una funzione, come l’esempio in Java che hai citato, pensavi che pure lì ti facesse la stampa?
 

MPG

Utente Attivo
544
4
orca miseria, dai caspita....
Pero' tornando allo swap si puo' usare solo quella funzione per lo scambio perchè se guardi in swap elements l'allegato prima si potrebbe usare per lo swap cosi' o no?

temp=num;
num= num[i+1];
num[i+1]=temp;
 
Ultima modifica:

MPG

Utente Attivo
544
4
Codice:
#include <iostream>

using namespace std;

int main()
{


const int n = 3;
int vet[n];
for(int i=0;i<n;i++)
{
    cin>>vet[i];
}
cout<<endl;
bool flag = true;
int stop = n - 1;

while (flag)
{
    flag = false;
    for (int i = 0; i <= stop; i++)
        if (vet[i] > vet[i + 1])
        {
            swap(vet[i], vet[i + 1]); // std::swap()
            flag = true;
        }

    stop -= 1;
}
for(int i=0;i<n; i++)
{
    cout<<vet[i]<<endl;
}
}
 

MPG

Utente Attivo
544
4
Pero' se non so o meglio se non mi è stato spiegato lo swap posso scrivere cosi' giusto?

Codice:
#include <iostream>

using namespace std;

int main()
{


const int n = 3;
int vet[n];
int tmp;
for(int i=0;i<n;i++)
{
    cin>>vet[i];
}
cout<<endl;
bool flag = true;
int stop = n - 1;

while (flag)
{
    flag = false;
    for (int i = 0; i <= stop; i++)
        if (vet[i] > vet[i + 1])
        {
            //swap(vet[i], vet[i + 1]); // std::swap()
            tmp=vet[i];
            vet[i]=vet[i+1];
            vet[i+1]=tmp;
            flag = true;
        }

    stop -= 1;
}
for(int i=0;i<n; i++)
{
    cout<<vet[i]<<endl;
}
}
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
Pero' se non so o meglio se non mi è stato spiegato lo swap posso scrivere cosi' giusto?

Codice:
#include 

using namespace std;

int main()
{


const int n = 3;
int vet[n];
int tmp;
for(int i=0;i{
cin>>vet[i];
}
coutbool flag = true;
int stop = n - 1;

while (flag)
{
flag = false;
for (int i = 0; i  if (vet[i] > vet[i + 1])
{
//swap(vet[i], vet[i + 1]); // std::swap()
tmp=vet[i];
vet[i]=vet[i+1];
vet[i+1]=tmp;
flag = true;
}

stop -= 1;
}
for(int i=0;i{
cout}
}
Mi permetto di darti questo consiglio: non stare ad aspettare che ti venga spiegato ogni singolo aspetto di un linguaggio; se vuoi sapere cosa fa una cosa, consulta l'API o fai una ricerca. In caso contrario sarai fermo ogni due per tre; si incontra di continuo qualcosa di nuovo in questo settore.
Inoltre consultare le API del linguaggio è cosa importante.
Poi tieni presente che l'API serve per fornire livelli di astrazione; ci saranno casi nei quali dovrai usare qualcosa senza preoccuparti di come funzioni internamente.

Nel caso di specie: se tu hai commentato swap e sotto effettui uno scambio tra due valori... cosa farà swap? Non so se il docente vuole per forza che utilizzi tutto ciò che cita, questo lo sai solo tu, che lo conosci.

Inviato da ONEPLUS A5000 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

MPG

Utente Attivo
544
4
"Nel caso di specie: se tu hai commentato swap e sotto effettui uno scambio tra due valori... cosa farà swap? "
Scusa non ho capito, io non ho commentato lo swap, l'aveva messo l'utente _Achille sopra e poichè di solito il prof non ci fa eseguire cose nuove se non le ha spiegate mi pare che con lo swap faccio quello scambio di valori che ho trascritto nelle 3 righe usando tmp, giusto?
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,854
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
"Nel caso di specie: se tu hai commentato swap e sotto effettui uno scambio tra due valori... cosa farà swap? "
Scusa non ho capito, io non ho commentato lo swap, l'aveva messo l'utente _Achille sopra e poichè di solito il prof non ci fa eseguire cose nuove se non le ha spiegate mi pare che con lo swap faccio quello scambio di valori che ho trascritto nelle 3 righe usando tmp, giusto?
Esatto. Lo swap comunque fa quello.

Inviato da ONEPLUS A5000 tramite App ufficiale di Tom\'s Hardware Italia Forum
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili