Bonjour,
j'ai une matrice de dimension dynamique, je souhaiterai la remplir avec des valeurs aléatoires, mais le code ci-dessous tout ce que me permet c'est de la remplir avec la même valeur dans chaque caisse; le valeur est effectivement aléatoire (entre mon MIN et mon MAX) chaque fois que je lance le programme. Comment ferai-je pour générer un valeur différente dans chaque cellule de ma grille??? De plus, si je souhaite utiliser de valeur avec plus d'un digit, il décale un partie de la caisse...donc comment je pourrais éviter ça???
Merci pour votre réponse.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct tabla{
int nombre[];
}tabla;
typedef tabla* Tabla;
struct matrice
{
int lignes, colonnes;
Tabla **coefficients;
} matrice;
void affiche_matrice( struct matrice *A)
{
int i, j;
for(i=0; i< A->lignes; i++)
{
for(j=0;j< A->colonnes;j++)
{
printf("+-----");
}
printf("+\n");
/*1ere ligne*/
for(j=0;j<A->colonnes;j++)
{
printf("| ");
}
printf("|\n");
/*2ere ligne*/
for(j=0;j<A->colonnes;j++)
{
printf("| ");
}
printf("|\n");
/*3eme ligne*/
for(j=0;j<A->colonnes;j++)
{
printf("| %d ",(*(A->coefficients[i][j])).nombre);
}
printf("|\n");
/*4eme ligne*/
for(j=0;j<A->colonnes;j++)
{
printf("| ");
}
printf("|\n");
/*5eme ligne*/
for(j=0;j<A->colonnes;j++)
{
printf("| ");
}
printf("|\n");
}
for(j=0;j<A->colonnes;j++)
printf("+-----");
printf("+\n");
}
int main (int argc,char *argv [])
{
int *lignes,*colonnes;
int k=0;
int MAX=9;
int MIN=1;
/*lignes=lignes;
colonnes=colonnes;*/
srand(time(NULL));
printf("ingrese lignes:");
scanf("%d",&lignes);
printf("ingrese colonnes:");
scanf("%d",&colonnes);
struct matrice *A = malloc ( sizeof ( struct matrice ) ) ;
int i, taille,j;
A-> lignes=lignes;
A-> colonnes=colonnes;
A-> coefficients = (Tabla**)malloc ( (A -> lignes)* sizeof ( Tabla* ) ) ;
taille=(A->lignes*A->colonnes);
printf("talla %d\n",taille);
tabla* nbr=(tabla*)malloc(sizeof(tabla));
for(k=0;k<taille;k++)
{
nbr->nombre[k]=(rand()%(MAX-MIN-1))+MIN;
}
for(i=0;i<A->lignes;i++)
{
A -> coefficients [i] = (Tabla*)malloc (( A -> colonnes) * sizeof (tabla* ) ) ;
for(j=0;j<A->colonnes;j++)
{
A->coefficients[i][j]=nbr;
}
}
affiche_matrice(A);
return 0;
}
