[C++] Aiuto array numeri casuali con 5 scambi casuali
Crea un array contenente valori casuali compresi tra 1 e 9 ed effettua 5 scambi casuali.
Fatto cosi' ma non viene..
Aiuto!!!
#include
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
int dim;
cout<<"Inserisci dim: "<
cin>>dim;
cout<
int A[dim];
cout< for(int i=0;i
{
A=rand()%10+1;
cout<<
}
cout<
for(int i=0;i<5;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
{
cout<<
}
return 0;
}
Fatto cosi' ma non viene..
Aiuto!!!
#include
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
int dim;
cout<<"Inserisci dim: "<
cout<
cout< for(int i=0;i
A=rand()%10+1;
cout<<
cout<
{
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
cout<<
return 0;
}
Risposte
Per generare un valore tra A e B il codice dovrebbe essere:
Generi infatti per prima cosa un numero casuale tra 0 e (B-A) compresi e sommi quindi A per ottenere un numero da A a B.
Nel tuo caso avrebbe quindi dovuto essere 9 - 1 + 1 = 9 e quindi:
rand() % (B - A + 1) + A;
Generi infatti per prima cosa un numero casuale tra 0 e (B-A) compresi e sommi quindi A per ottenere un numero da A a B.
Nel tuo caso avrebbe quindi dovuto essere 9 - 1 + 1 = 9 e quindi:
rand() % 9 + 1
Oltre a quanto detto da apatriarca, il motivo per cui il programma ti restituisce valori "strani" è che c'è un errore nella parte relativa allo scambio. Un indizio, prova a inizializzare temp ad un certo valore >9 (non so tipo 1234) e lancia il programma.
Qualche osservazione:
- perché includi cmath?
- qual è lo scopo della seguente riga di codice: cout< - la dimensione di un array (statico) deve essere una costante.
Qualche osservazione:
- perché includi cmath?
- qual è lo scopo della seguente riga di codice: cout< - la dimensione di un array (statico) deve essere una costante.
Infatti alla fine va tutto così:
#include
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
int dim;
cout<<"Inserisci dim: "<
cin>>dim;
cout<
int A[dim];
cout< for(int i=0;i
{
A=rand()%9+1;
cout<<
}
cout<
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
{
cout<<
}
return 0;
}
#include
#include
#include
#include
using namespace std;
int main()
{
srand(time(NULL));
int dim;
cout<<"Inserisci dim: "<
cout<
cout< for(int i=0;i
A=rand()%9+1;
cout<<
cout<
{
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
cout<<
return 0;
}