DOMANDA Ancora problema con array c++

MPG

Utente Attivo
544
4
Crea un array contenente valori casuali compresi tra 1 e 9 ed effettua 5 scambi casuali.
Fatto cosi' ma non viene..
Aiuto!!!

Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;

int main()
{
  srand(time(NULL));
  int dim;
  cout<<"Inserisci dim: "<<endl;
  cin>>dim;
  cout<<endl;
int A[dim];
cout<<A[dim-1]<<endl;
for(int i=0;i<dim;i++)
{
A[i]=rand()%10+1;
cout<<A[i]<<endl;
}
cout<<endl;
for(int i=0;i<4;i++)
{
int k=rand()%dim;
int h=rand()%dim;
int temp;
A[k]=temp;
A[k]=A[h];
A[h]=temp;
}
for(int i=0;i<dim;i++)
{
cout<<A[i]<<endl;
}

    return 0;
}
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Crea un array contenente valori casuali compresi tra 1 e 9 ed effettua 5 scambi casuali.
Fatto cosi' ma non viene..
Aiuto!!!

Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;

int main()
{
  srand(time(NULL));
  int dim;
  cout<<"Inserisci dim: "<<endl;
  cin>>dim;
  cout<<endl;
int A[dim];
cout<<A[dim-1]<<endl;
for(int i=0;i<dim;i++)
{
A[i]=rand()%10+1;
cout<<A[i]<<endl;
}
cout<<endl;
for(int i=0;i<4;i++)
{
int k=rand()%dim;
int h=rand()%dim;
int temp;
A[k]=temp;
A[k]=A[h];
A[h]=temp;
}
for(int i=0;i<dim;i++)
{
cout<<A[i]<<endl;
}

    return 0;
}
Inverti A[k]=temp;
 

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
Dovresti anche cambiare la condizione:

C:
for(int i=0;i<4;i++)

con questo non hai 5 scambi ma 4.
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
A[k]=temp la variabile di sinistra (a[k]) prende il valore della variabile di destra (temp). Ma a temp quando viene assegnato un valore?
 

MPG

Utente Attivo
544
4
Ma se faccio temp= A[k] ho provato nn viene lo stesso.... e anche gli scambi non sono 5..
 

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

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Ma se faccio temp= A[k] ho provato nn viene lo stesso.... e anche gli scambi non sono 5..
Gli scambi devi aumentare nel ciclo for come detto da DispatchCode. Comunque da me funziona, prova a stampare ad ogni cambio
 

MPG

Utente Attivo
544
4
Fatto cosi', se provo a mettere es 6 come dim viene cosi:

4199419
7
4
3
6
6
9

9
7
4
3
6
6


Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;

int main()
{
  srand(time(NULL));
  int dim;
  cout<<"Inserisci dim: "<<endl;
  cin>>dim;
  cout<<endl;
int A[dim];
cout<<A[dim-1]<<endl;
for(int i=0;i<dim;i++)
{
A[i]=rand()%10+1;
cout<<A[i]<<endl;
}
cout<<endl;
for(int i=0;i<5;i++)
{
int k=rand()%dim;
int h=rand()%dim;
int temp;
temp=A[k];
A[k]=A[h];
A[h]=temp;
}
for(int i=0;i<dim;i++)
{
cout<<A[i]<<endl;
}

    return 0;
}
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Fatto cosi', se provo a mettere es 6 come dim viene cosi:

4199419
7
4
3
6
6
9

9
7
4
3
6
6


Codice:
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
using namespace std;

int main()
{
  srand(time(NULL));
  int dim;
  cout<<"Inserisci dim: "<<endl;
  cin>>dim;
  cout<<endl;
int A[dim];
cout<<A[dim-1]<<endl;
for(int i=0;i<dim;i++)
{
A[i]=rand()%10+1;
cout<<A[i]<<endl;
}
cout<<endl;
for(int i=0;i<5;i++)
{
int k=rand()%dim;
int h=rand()%dim;
int temp;
temp=A[k];
A[k]=A[h];
A[h]=temp;
}
for(int i=0;i<dim;i++)
{
cout<<A[i]<<endl;
}

    return 0;
}
Guarda che funziona. L'unico miglioramento sarebbe quello di imporre che k != h, sennò non ha senso fare lo scambio
 

MPG

Utente Attivo
544
4
Ma quel numero 4199419 che viene? Se metto dim 6 vinee perennemente questo numero prima, Io uso codeblocks mi fai vedere il tuo screenshot, a me questo appare!
 

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

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili