Vi spiego brevemente, devo fare un archivio telefonico il mio archivio è di 31 giorni in ogni giorno posso fare al massimo 10 chiamate.Nella struttura chiamata ho inizializzato tutti i numeri_c e numeri_r con nove asterischi.
Voglio riempire la matrice di strutture chiamata in maniera casuale, così ho fatto un for esterno che mi ripete il numero di inserimenti casuali all'interno del for ogni volta si genera un numero n_g che è il numero del giorno dove devo andare ad inserire la mia chiamata.
Io ho impostato che se in quel giorno ho già effettuato una chiamata allora l'inserimento dovrà andare alla chiamata successiva questo controllo l'ho fatto con un while solo che quando vado a stampare il valore degli inserimenti casuali che ha fatto mi trovo sempre che ha fatto solo 10 inserimenti anche se il mio ciclo esterno for lo faccio arrivare a 10000 cosa ho sbagliato? Grazie
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct chiamata
{
char numero_c[10];
char numero_r[10];
float durata;
float costo;
};
typedef struct chiamata Chiamata;
int main()
{
Chiamata Archivio[10][31];
int n_g,k=0,j,i,t;
int inserito=0;
/*2 cicli innestati per porre ********* al primo elemento dell'archivio*/
for(j=0;j<31;j++)
{
for(i=0;i<10;i++)
{
strcpy(Archivio[i][j].numero_c,"*********");
strcpy(Archivio[i][j].numero_r,"*********");
Archivio[i][j].durata=0.0;
Archivio[i][j].costo=0.0;
}
}
/* 48 a 57 codice ascii dei numeri da 0 a 9 */
srand(time(NULL));
for(i=0;i<1000;i++)
{
n_g=rand()%31;
while(k<10 && strcmp(Archivio[k][n_g].numero_c,"*********")==0)
{
Archivio[k][n_g].durata=(1+rand()%480);
Archivio[k][n_g].costo=(Archivio[k][n_g].durata)*0.1;
for(j=0;j<9;j++)
{
Archivio[k][n_g].numero_c[j]=48+(rand()%10);
Archivio[k][n_g].numero_r[j]=48+(rand()%10);
}
k++;
}
}
for(j=0;j<31;j++)
{
for(i=0;i<9;i++)
puts(Archivio[i][j].numero_c);
}
return 0;
}