Symboles aleatoires dans un struct en C

Fermé
maria_silva - 22 juin 2011 à 23:11
Bonjour,

Je suis là de nouveau!! :)

J'ai crée un struct qui s'appelle "pièce" avec un contour(o,#,+,*), une forme(carré, losange, croix) et un lettre à l'intérieur(A,B,C,D)..et tout ça en aléatoire. Tout marche bien, mais...

maintenant, j'ai un ptit souci. Je n'arrive pas à intégrer ma fonction qui génère le contour de façon aléatoire. Est-ce que quelqu'un peut m'aider???


Merci BCP et dzlé pour mes messages aussi longs :)

J'ajoute mon code:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef struct piece{
int forme;
int contour;
int lettre;
}piece;

typedef piece* Piece;

struct matrice
{
int lignes, colonnes;
Piece **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++)
{
if((*(A->coefficients[i][j])).forme==1) {
printf("|%c%c%c%c%c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if ((*(A->coefficients[i][j])).forme==2)
{
printf("| %c " ,(*(A->coefficients[i][j])).contour);
}
else if ((*(A->coefficients[i][j])).forme==3)
{
printf("| %c%c%c ",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else{
printf("| ");
}
}
printf("|\n");

/*2ere ligne*/
for(j=0;j<A->colonnes;j++)
{
if((*(A->coefficients[i][j])).forme ==1)
{
printf("|%c %c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==2){
printf("| %c %c ",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==3){
printf("|%c%c %c%c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else
{
printf("| ");
}
}
printf("|\n");

/*3eme ligne*/
for(j=0;j<A->colonnes;j++)
{
if((*(A->coefficients[i][j])).forme ==1){
printf("|%c %c %c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).lettre,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==2){
printf("|%c %c %c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).lettre,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==3){
printf("|%c %c %c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).lettre,(*(A->coefficients[i][j])).contour);
}
else{
printf("| ");
}
}
printf("|\n");
/*4eme ligne*/
for(j=0;j<A->colonnes;j++){

if((*(A->coefficients[i][j])).forme ==1){
printf("|%c %c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==2){
printf("| %c %c ",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==3){
printf("|%c%c %c%c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else{
printf("| ");
}
}
printf("|\n");
/*5eme ligne*/
for(j=0;j<A->colonnes;j++){
if((*(A->coefficients[i][j])).forme ==1){
printf("|%c%c%c%c%c",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==2){
printf("| %c ",(*(A->coefficients[i][j])).contour);
}
else if((*(A->coefficients[i][j])).forme ==3){
printf("| %c%c%c ",(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour,(*(A->coefficients[i][j])).contour);
}
else
{
printf("| ");
}
}
printf("|\n");
}
for(j=0;j<A->colonnes;j++) {

printf("+-----");
}
printf("+\n");



}

int randomcontour()
{
int MIN=0;
int MAX=3;
int W=35;
int X=43;
int Y=42;
int Z=111;
int i=0;
int j,k;
srand(time(NULL));

for(i=MIN;i<MAX+1;i++)
{
j=(rand()%(MAX-MIN+1))+MIN;
}
if(j==0)
{
return Y;
}
if(j==1)
{
return X;
}
if(j==2)
{
return W;
}
if(j==3)
{
return Z;
}
return j;
}



int main (int argc,char *argv [])
{
/*int a=35;
int b=43;
int c=42;
int d=111;
int MAX=a;
int MIN=d;
int k=0;*/

// j'ai crée ces variables pour essayer une fonction random qui utilise les bornes a et d avec les valeurs "int" qui me donnent les contours (o,#,+,*) si les affiche en type char (%c)...mais cela ne marche pas :( //

srand(time(NULL));


printf("%c\n",randomcontour());/* test pour prouver la fonction*/


struct matrice *A = malloc ( sizeof ( struct matrice ) ) ;

int lignes,colonnes;
int i, taille,j;


printf("ingrese lignes:");
scanf("%d",&lignes);

printf("ingrese colonnes:");
scanf("%d",&colonnes);

A-> lignes=lignes;
A-> colonnes=colonnes;
A-> coefficients = (Piece**)malloc ( (A -> lignes)* sizeof ( Piece* ) ) ;
taille=(A->lignes*A->colonnes);
printf("talla %d\n",taille);



for(i=0;i<A->lignes;i++)
{
A -> coefficients [i] = (Piece*)malloc (( A -> colonnes) * sizeof (piece* ) ) ;
for(j=0;j<A->colonnes;j++)
{
piece* nbr=(piece*)malloc(sizeof(piece));
nbr->forme=(rand()%(3-1+1))+1;
nbr->contour='#'; /*CELA OU IL FAUT INTEGRER LA FONCTION*/
nbr->lettre=(rand()%(69-65+1))+65;
A->coefficients[i][j]=nbr;
}
}
affiche_matrice(A);
return 0;
}