Affichage d'une matrice dynamique de caractere en C
sassoura
Messages postés
23
Statut
Membre
-
sassoura Messages postés 23 Statut Membre -
sassoura Messages postés 23 Statut Membre -
Bonjour,
ne veut pas executer svp puvez vous m'aider ,merci bien
grille1 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille1[v]=(casee*)malloc(l*sizeof(casee));
}
for (int i=0;i<=c;i++)
{ for (int j=0;j<=l;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c",(grille1[i][j].occupied)->b);
}
}
ne veut pas executer svp puvez vous m'aider ,merci bien
grille1 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille1[v]=(casee*)malloc(l*sizeof(casee));
}
for (int i=0;i<=c;i++)
{ for (int j=0;j<=l;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c",(grille1[i][j].occupied)->b);
}
}
A voir également:
- Affichage d'une matrice dynamique de caractere en C
- Caractère spéciaux - Guide
- Caractere speciaux - Guide
- Caractère ascii - Guide
- Tableau croisé dynamique - Guide
- Caractere vide - Guide
6 réponses
Bonjour
On n'a ici qu'un petit bout du code, on ne peut pas tout vérifier mais déjà :
Ton premier malloc semble incorrect. D'après ton casting (casee**) tu alloues des casee*. Tu devrais donc avoir sizeof (casee*) et non pas sizeof(casee)
En ce qui concerne l'affichage, il te manque un saut de ligne à la fin de chauque ligne.
Et si l correspond à ligne et c à colonne, tu as inversé les deux.
On n'a ici qu'un petit bout du code, on ne peut pas tout vérifier mais déjà :
Ton premier malloc semble incorrect. D'après ton casting (casee**) tu alloues des casee*. Tu devrais donc avoir sizeof (casee*) et non pas sizeof(casee)
En ce qui concerne l'affichage, il te manque un saut de ligne à la fin de chauque ligne.
Et si l correspond à ligne et c à colonne, tu as inversé les deux.
bon nous voulons programmer un jeu "Demineur" il n'est pas fini c'est que le debut
nous avons arrivé à ca
#include <stdio.h>
#include <stdlib.h>
typedef struct occup occup;
struct occup
{
int a;
char b;
} ;
typedef struct casee casee;
struct casee
{
occup* occupied;
int i;
int j;
};
/*programme principale*/
int main()
{int l,c;
char ch;
casee **grille2=NULL;
casee **grille1=NULL;
printf("\n");
printf(" ________________________________\n");
printf("| \t \t \t \t | \n");
printf("| \t BIENVENUE \t \t | \n");
printf(" \n\n");
printf("| Au Jeu du demineur \n");
printf("|________________________________|\n\n\n");
printf("\n \t Voulez-vous choisir votre Grille de jeux!!\n \n si oui tapez 'o' sinon 'n' \n\n");
printf("votre reponse ="); scanf("%c",&ch);
if(ch=='n')
{
printf(" voila notre proposition : \n\n ");
printf(" \t | ");
for(int i=1;i<=9;i++)
{
printf("%d ",i);
}
printf("\n");
printf("\t ---------------------\n");
for(int k=1;k<=9;k++)
{
printf("\t %d|",k);
printf(" * * * * * * * * * \n ");
}
printf("\n\n");
}
else { if (ch=='o')
{
printf(" \t Donnez votre choix de grille\n s'il vous plait donnez le nombre du ligne et du colonne entre[10..300] \n");
printf("nombre de ligne l=");
scanf("%d",&l);
printf("nombre de colonne c=");
scanf("%d",&c);
grille2 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille2[v]=(casee*)malloc(l*sizeof(casee));
}
grille1 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille1[v]=(casee*)malloc(l*sizeof(casee));
}
for (int i=0;i<=c;i++)
{ for (int j=0;j<=l;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c",(grille1[i][j].occupied)->b);
}
}
printf("\n ooops !! essayez-vous plus tard :p\n\n ");
}
}
system("pause");
return 0;
}
nous avons arrivé à ca
#include <stdio.h>
#include <stdlib.h>
typedef struct occup occup;
struct occup
{
int a;
char b;
} ;
typedef struct casee casee;
struct casee
{
occup* occupied;
int i;
int j;
};
/*programme principale*/
int main()
{int l,c;
char ch;
casee **grille2=NULL;
casee **grille1=NULL;
printf("\n");
printf(" ________________________________\n");
printf("| \t \t \t \t | \n");
printf("| \t BIENVENUE \t \t | \n");
printf(" \n\n");
printf("| Au Jeu du demineur \n");
printf("|________________________________|\n\n\n");
printf("\n \t Voulez-vous choisir votre Grille de jeux!!\n \n si oui tapez 'o' sinon 'n' \n\n");
printf("votre reponse ="); scanf("%c",&ch);
if(ch=='n')
{
printf(" voila notre proposition : \n\n ");
printf(" \t | ");
for(int i=1;i<=9;i++)
{
printf("%d ",i);
}
printf("\n");
printf("\t ---------------------\n");
for(int k=1;k<=9;k++)
{
printf("\t %d|",k);
printf(" * * * * * * * * * \n ");
}
printf("\n\n");
}
else { if (ch=='o')
{
printf(" \t Donnez votre choix de grille\n s'il vous plait donnez le nombre du ligne et du colonne entre[10..300] \n");
printf("nombre de ligne l=");
scanf("%d",&l);
printf("nombre de colonne c=");
scanf("%d",&c);
grille2 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille2[v]=(casee*)malloc(l*sizeof(casee));
}
grille1 =(casee**)malloc(c*sizeof(casee));
for (int v=0;v<c;v++)
{
grille1[v]=(casee*)malloc(l*sizeof(casee));
}
for (int i=0;i<=c;i++)
{ for (int j=0;j<=l;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c",(grille1[i][j].occupied)->b);
}
}
printf("\n ooops !! essayez-vous plus tard :p\n\n ");
}
}
system("pause");
return 0;
}
je doix ecrire comme ca? ,mais j'ai pas compris pourquoi il faut inverser c et l ?
grille2 =(casee**)malloc(l*sizeof(casee*));
for (int v=0;v<l;v++)
{
grille2[v]=(casee*)malloc(c*sizeof(casee*));
}
grille1 =(casee**)malloc(l*sizeof(casee*));
for (int v=0;v<l;v++)
{
grille1[v]=(casee*)malloc(c*sizeof(casee*));
}
for (int i=0;i<=l;i++)
{ for (int j=0;j<=c;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c \ n",(grille1[i][j].occupied)->b);
}
}
grille2 =(casee**)malloc(l*sizeof(casee*));
for (int v=0;v<l;v++)
{
grille2[v]=(casee*)malloc(c*sizeof(casee*));
}
grille1 =(casee**)malloc(l*sizeof(casee*));
for (int v=0;v<l;v++)
{
grille1[v]=(casee*)malloc(c*sizeof(casee*));
}
for (int i=0;i<=l;i++)
{ for (int j=0;j<=c;j++)
{
(grille1[i][j].occupied)->b='*' ;
printf("%c \ n",(grille1[i][j].occupied)->b);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, il ne faut pas écrire comme ça.
Tu as lu "Tu devrais donc avoir sizeof (casee*) et non pas sizeof(casee) " sans lire pourquoi, alors tu l'as fait partout. Or, il ne faut pas le faire partout.
Je t'ai dit d'ajouter un changement de ligne, tu en ajoutes à chaque caractère. Là encore, c'est absurde. Ne fais rien sans comprendre pourquoi.
Quant à l'inversion ligne- colonne, il suffit de regarder comment tes boucles sont imbriquées pour voir que tu vas écrire sur une même ligne (quand tu auras correctement mis ton saut de ligne) des éléments d'indice de ligne différent mais avec le même indice de colonne.
Je m'aperçois en plus que tu utilises le pointeur occupied sans jamais l'avoir initialisé. D'ailleurs, je ne vois pas très bien l'intérêt de définir ce champ de casee comme un occup * , un occup sans * serait plus simple.
Tu as lu "Tu devrais donc avoir sizeof (casee*) et non pas sizeof(casee) " sans lire pourquoi, alors tu l'as fait partout. Or, il ne faut pas le faire partout.
Je t'ai dit d'ajouter un changement de ligne, tu en ajoutes à chaque caractère. Là encore, c'est absurde. Ne fais rien sans comprendre pourquoi.
Quant à l'inversion ligne- colonne, il suffit de regarder comment tes boucles sont imbriquées pour voir que tu vas écrire sur une même ligne (quand tu auras correctement mis ton saut de ligne) des éléments d'indice de ligne différent mais avec le même indice de colonne.
Je m'aperçois en plus que tu utilises le pointeur occupied sans jamais l'avoir initialisé. D'ailleurs, je ne vois pas très bien l'intérêt de définir ce champ de casee comme un occup * , un occup sans * serait plus simple.