Bonjour,
Mon programme a pour but de distribuer des chiffres à deux personnes. Ces deux personnes les reçoivent chacune leur tour.
Le problème est que j'ai l'impression que la main de la première personne écrase celle de la seconde.
Un problème d'allocation mémoire peut être ...
Je suis un peu perdu, un peu d'aide ne serais pas de refus
Voila mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 #include <stdio.h> #include <stdlib.h> #define SBUFF 1024 struct total{ int nbchiffre; char * chiffre[]; }; struct tirer{ int nbchiffre; char * chiffre[]; }; int main(){ /* Initialisation des différentes variables */ struct total * base; base = malloc((sizeof(struct total) + sizeof(char**)) * SBUFF); struct tirer * main; main = malloc((sizeof(struct tirer) + sizeof(char**))*SBUFF); int x = 0; int k = 0; int j,i,crt; int nbtour = 0; char buf[SBUFF]; srand(time(NULL)); base->nbchiffre = 13; base->chiffre[0] = "0"; base->chiffre[1] = "1"; base->chiffre[2] = "2"; base->chiffre[3] = "3"; base->chiffre[4] = "4"; base->chiffre[5] = "5"; base->chiffre[6] = "6"; base->chiffre[8] = "8"; base->chiffre[9] = "9"; base->chiffre[9] = "9"; base->chiffre[10] = "10"; base->chiffre[11] = "11"; base->chiffre[12] = "12"; base->chiffre[13] = "13"; while(x<6){ crt = rand() % base->nbchiffre; /* Je met le chiffre choisie dans la main du joueur k */ main[k].chiffre[x]=base->chiffre[crt]; /* Je supprime le chiffre tiré de l'ensemble et je réduit ce dernier */ base->chiffre[crt] = '\0'; for(j=crt;j<base->nbchiffre;j++) base->chiffre[j] = base->chiffre[j+1]; base->nbchiffre--; /* J'affiche ce qui se trouve dans la main k */ for(i=0;i<6;i++) printf("%s | ",main[k].chiffre[i]); printf("\n"); /* On passe à la main suivante */ k=1; nbtour++; /* Si les deux mains ont tiré un chiffre alors je repasse à la première main et je met le prochain chiffre à x+1 */ if( nbtour%2 == 0){ k=0; x++; printf("\n"); } } return 0; }
Partager