|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
[c] Funzioni e Rand
Ciao
come mai non riesco a generare dei veri numeri casuali grazie a questo codice?? Codice:
#include <stdio.h>
#include <stdlib.h>
#define DIM 6
int mario[DIM];
int vetmario[90];
void genera(int*);
void scrivi();
void ordina(int*, int);
int main()
{
int t;
for (t=0; t<=20;t++)
{
genera(mario);
ordina(mario, DIM);
scrivi();
printf("\n");
}
return 0;
}
void genera (int* Array)
{
int p, k;
int seed;
for(p=0;p<= DIM;p++)
{
for (k=0;k<=seed;k++)
{
srand(time(NULL));
vetmario[k]= rand()%seed;
}
mario[p] = vetmario[k-1];
}
}
void scrivi()
{
int k;
for (k=0;k<=DIM;k++)
{
printf("%d ", mario[k]);
}
}
void ordina(int* Array, int elemN)
{
int i, tmp, ultimo;
int alto = (elemN - 1);
while (alto >= 0)
{
ultimo = -1;
for (i=0; i<alto; i++)
if (mario[i]>mario[i+1])
{
tmp = mario[i];
mario[i] = mario[i+1];
mario[i+1] = tmp;
ultimo = i;
}
alto = ultimo;
}
}
ps, il programma è efficiente o potrebbe essere migliorato? Grazie per l'aiuto |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
srand() va chiamato solamente 1 volta all'inizio del programma.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
ho spostato srand nel main e modificato la void genera in questo modo
Codice:
void genera (int* Array)
{
int p, k;
int seed = 90;
srand(seed);
for(p=0;p<= DIM;p++)
{
for (k=0;k<=seed;k++)
{
vetmario[k]= rand()%90;
}
mario[p] = vetmario[k-1];
}
}
ma mi genera 20 righe uguali... edit: ora funzia, mi sono dimenticato di cancellare l'srand dalla funzione |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:24.



















