Ancora selection sort C++

MPG

Utente Attivo
544
4
Scusate vedete file allegato.
Dove sbaglio?
Mi viene errore al secondo for..

Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;


{
    srand(time(NULL));



const int n = 5;
int vet[dim];
int tmp;
for(int i=0;i<dim;i++)
{
    vet[i]=rand();
}

for (int i = 1; i <dim; i++)
    {for (j=i+1, j<dim, j++)
        { if vet[j]<vet[i])

            tmp=vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;

         }

    }

}


     for (int i = 0; i <dim; i++):
     cout<<vett[i];

}
 

Allegati

  • Selsort.jpg
    Selsort.jpg
    47.1 KB · Visualizzazioni: 67

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Scusate vedete file allegato.
Dove sbaglio?
Mi viene errore al secondo for..

Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;


{
    srand(time(NULL));



const int n = 5;
int vet[dim];
int tmp;
for(int i=0;i<dim;i++)
{
    vet[i]=rand();
}

for (int i = 1; i <dim; i++)
    {for (j=i+1, j<dim, j++)
        { if vet[j]<vet[i])

            tmp=vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;

         }

    }

}


     for (int i = 0; i <dim; i++):
     cout<<vett[i];

}

Sbagli perchè non usi GDB, e se ti rispondessi dicendoti l'errore continueresti a sbagliare in futuro, dunque ti rispondo dicendoti impara a debuggare il tuo codice.
 
  • Mi piace
Reazioni: _Achille

MPG

Utente Attivo
544
4
Io devo usare code blocks per forza con c++ , non capisco cosa vuoi dire... in ogni caso vedi tu se vuoi/puoi aiutarmi.
 

Hobet

Utente Attivo
609
222
CPU
i5 6600k
Dissipatore
AIO H100
Scheda Madre
ASUS z170 Deluxe
HDD
1 WD Blue 1 TB; evo 850 500gb
RAM
Vengeance 4x4
GPU
GTX 1070ti MSI
Audio
Nope
Monitor
MG278Q
Case
750D Corsair
Net
Fastweb 200/30
OS
PucyBuntu
Io devo usare code blocks per forza con c++ , non capisco cosa vuoi dire... in ogni caso vedi tu se vuoi/puoi aiutarmi.
Tieni, vai di confronto per capire gli errori. Che sono la maggior parte sintattici.

Codice:
for (int i = 0; i < dim; i++)
    {
      for(int j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
          {
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
          }
         }
    }
 

MPG

Utente Attivo
544
4
Non viene...
Poi hai messo nel primo for
int i = 0
mentre se guardi in quello che dovrei seguire è i=1,2......
Cos'è poi GDB??
 

_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 viene...
Poi hai messo nel primo for
int i = 0
mentre se guardi in quello che dovrei seguire è i=1,2......
Cos'è poi GDB??
0 -> n-1 va quanto 1 -> n
 

MPG

Utente Attivo
544
4
Comunque ho sempre il blocco del programma sul secondo for (faccio riferimento alla parte di code che mi dato l'utente Rand)
Ho "expected '; ' before '<token<
 

_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
Comunque ho sempre il blocco del programma sul secondo for (faccio riferimento alla parte di code che mi dato l'utente Rand)
Ho "expected '; ' before '<token<
Il suo codice è perfetto
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,191
5,631
Comunque ho sempre il blocco del programma sul secondo for (faccio riferimento alla parte di code che mi dato l'utente Rand)
Ho "expected '; ' before '<token<
Non è che hai lasciato una virgola in un for ?
Devi usare ;
 

MPG

Utente Attivo
544
4
Ho fatto cosi ma poi mi rimane lo schermo nero e si impalla....
Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;


{
    srand(time(NULL));



const int n = 5;
int vet[dim];
int tmp;
for(int i=0;i<dim;i++)
{
    vet[i]=rand();
}

for (int i = 0; i < dim; i++)
    {
      for(int j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
          {
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
          }
         }
    }


     for (int i = 0; i <dim; i++);
     cout<<vet[i];

}
}
 

_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 fatto cosi ma poi mi rimane lo schermo nero e si impalla....
Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;


{
    srand(time(NULL));



const int n = 5;
int vet[dim];
int tmp;
for(int i=0;i<dim;i++)
{
    vet[i]=rand();
}

for (int i = 0; i < dim; i++)
    {
      for(int j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
          {
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
          }
         }
    }


     for (int i = 0; i <dim; i++);
     cout<<vet[i];

}
}
Non ho capito perché usi le graffe per fare scope, poi ti ridichiari le varibili i e j nei cicli... bah.
Fa una funzione selectionSort, e per ora non preoccuparti del main. Intanto imposta l’algoritmo di ordinamento poi pensi al vettore e a questa maledetta stampa che vuoi ovunque
 

MPG

Utente Attivo
544
4
La stampa a video mi viene quasi sempre chiesta dal prof....
Scusa l'algoritmo di ordinamento e' in questo code non capisco come al solito cosa dovrei fare...

Codice:
for (int i = 0; i < dim; i++)
    {
      for(int j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
          {
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
          }
         }
    }
 

_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
La stampa a video mi viene quasi sempre chiesta dal prof....
Scusa l'algoritmo di ordinamento e' in questo code non capisco come al solito cosa dovrei fare...

Codice:
for (int i = 0; i < dim; i++)
    {
      for(int j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
          {
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
          }
         }
    }
Devi rifare tutto. O scegli di dichiarare i contatori nel main o nei cicli. Non puoi fare un semplice copia incolla se il tuo codice è diverso. Lo si analizza e lo si riporta, ma senza CTRL-C CTRL-V.
L’errore del ; indica una riga ma si riferisce a quella precedente, giusto perché tu lo sappia.

Non usare graffe a caso. Evita la stampa per ora. Rifà il codice.
 

MPG

Utente Attivo
544
4
Cosi'? Ho messo il primo con suggerimento di utente RAnd e il secondo con codice mio.

Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;
srand(time(NULL));
const int n = 5;
int vet[dim];
int tmp;
vet[i]=rand();

for (i = 0; i < dim; i++)
    {vet[i]=rand();
      for( j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
           }
  
         }
         }

o
Codice:
       #include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;
  srand(time(NULL));
const int n = 5;
int vet[dim];
int tmp;
for(int i=0;i<dim;i++)
{
    vet[i]=rand();
}

for (int i = 1; i <dim; i++)
    {for (j=i+1, j<dim, j++)
        { if vet[j]<vet[i])

            tmp=vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;

         }

    }

}


   
}
  
[/CODE}
 
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
Cosi'?

Codice:
#include <iostream>
#include <ctime>
#include<cstdlib>

using namespace std;

int main()
{int i,j, dim;
srand(time(NULL));
const int n = 5;
int vet[dim];
int tmp;
vet[i]=rand();

for (i = 0; i < dim; i++)
    {vet[i]=rand();
      for( j=i+1; j < dim; j++)
        {
          if(vet[j]<vet[i])
            int tmp =vet[i];
            vet[i]=vet[j];
            vet[j]=tmp;
           }
    }
}
Ommiodio no. Non mischiare inizializzazione e sorting. Sono due cose separate e vanno tenute separate.
E sappi che il primo vet = rand() non ha senso perché i non è inizializzata (e non ha senso scrivere sta roba in ogni caso).
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili