DOMANDA Ancora problema con array c++

  • Autore discussione Autore discussione MPG
  • Data d'inizio Data d'inizio
Pubblicità

MPG

Utente Attivo
Messaggi
566
Reazioni
4
Punteggio
55
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;
}
 
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;
 
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?
 
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;
}
 
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
 
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!
 
Pubblicità
Pubblicità
Indietro
Top