Aide programme C

Fermé
don_josep Messages postés 22 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 22 août 2011 - 21 août 2011 à 16:25
 Utilisateur anonyme - 21 août 2011 à 16:59
salut
il ya quelqu'un qui peut m'aider à programmer ce jeu s'il vous plaît ¿
Le tableau suivant représente un scénario où chaque cellule est
un espace où vous pouvez vivre une cellule
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - * * - - - - - -
- - - - * - - - - -
- - - - - * - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - -
Une boîte a
vec un * indique une cellule vivante dans une telle
boîte. Une boîte avec le caractère - indique une cellule morte
dans cette boîte. Chaque tuile ne peut avoir soit une cellule vivante ou
Alors qu'une cellule morte.
De la configuration initiale des cellules, le stade
évolue sur la base des règles de transition suivantes:

toute cellule vivante avec moins de 2 salons vecinos1 meurt
la solitude.
- Toute cellule vivante avec plus de 3 voisins vivants meurt
surpopulation.
- Toute cellule vivante avec 2 ou 3 voisins vivants reste vivante.
- Toute cellule morte avec exactement trois voisins vivants
Reborn (le prochain tour sera vivant).

Il est important de comprendre que toutes les naissances et les décès
se produisent simultanément. Ensemble, ils font évoluer le système
une génération à la suivante.

Programme à exécuter
Il doit y avoir un programme qui lit un fichier d'entrée
contiennent des informations sur la phase initiale, avec le nombre
total de générations que le programme doit simuler. Notez que le
scénario peut avoir n'importe quelle taille N x M cellules.
Plus précisément, le fichier d'entrée contient:
- Le nombre total de générations que le programme doit simuler,
suivie par un saut de ligne (le caractère '\ n')
- La taille du scénario initial (spécifié par
nombre de lignes et le nombre de colonnes séparées par une
blanc) suivi d'un retour
- La phase initiale






Le programme doit simuler l'évolution de la phase initiale,
de génération en génération, jusqu'à ce que le nombre total de générations
indiqué dans le fichier d'entrée. Comme exemple de l'évolution
les 3 premières générations montrent la configuration initiale


précédente



Generación 1

----------

----------

----------

----**----

------*---

-------*--

------*---

----------

----------

----------



Generación 2

----------

----------

----------

-----*----

-----**---

------**--

----------

----------

----------

----------

Generación 3

----------

----------

----------

-----**---

-----*-*--

-----***--

----------

----------

----------

----------

Les différentes étapes ou générations en passant le stade
(De l'installation initiale à la dernière génération)
écrites dans le fichier de sortie. En outre, le fichier de sortie
également être écrit:
Diagramme à barres indiquant le nombre de cellules vivantes dans -
chaque génération. Cela devrait inclure un graphique à barres pour les
toutes les 10 générations, c'est à dire, un graphique à barres à partir
génération initiale à la dixième génération, l'autre de la
onzième à la vingtième génération, et ainsi de suite. Chaque
graphiques à barres généré doit être suivie d'un saut
ligne (le caractère '\ n').
- Un tableau de N cellules M x en indiquant dans chaque
boîte, le nombre de générations qu'il y avait de la vie dans ce
boîte. Cette table doit également être suivi par un saut
en ligne.
- Les coordonnées de la boîte où il a vécu la plus longue cellule.
Rappelez-vous, nous n'entendons pas la boîte dans laquelle il y avait la vie en
plusieurs générations, mais la boîte dans laquelle la cellule a été
générations qui ont vécu au cours d'une dispute entre un de ses
naissances et les décès correspondant (le cas échéant)

3 réponses

nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
21 août 2011 à 16:32
C'est le jeu de la vie de Conway si je ne m'abuse, mais bon t'attends pas à ce que quelqu'un te le livre tout maché, comprend que c'est beaucoup demander, et c'est pas t'aider...
Tu devrais commencer à programmer, puis demander de l'aide sur les notions qui te bloques...

Le chêne aussi était un gland, avant d'être un chêne
1
don_josep Messages postés 22 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 22 août 2011 2
21 août 2011 à 16:50
'je fais le code mais J'ai le code, mais pour rendre le fichier de sortie entreé je le trouve tres dificile::
1.#include <stdio.h>
2.#include <conio.h>
3.#include <stdlib.h>
4.
5.
6.
7.void mise_a_0(int[20][70],int[20][70]);
8.void message();
9.void fenetre();
10.void saisie(int[20][70]);
11.void affiche(int[20][70]);
12.int test(int[20][70]);
13.void clear_fenetre();
14.void affect_etat_precedent(int[20][70],int[20][70]);
15.void affect_etat_suivant(int[20][70],int[20][70]);
16.void calcul_cellule(int[20][70],int[20][70]);
17.void alea(int[20][70]);
18.void accueil(int[20][70]);
19.int sortie();
20.int test2(int[20][70]);
21.void menu_saisie(int[20][70]);
22.void permut(int*,int*);
23.void saisie_ligne(int[20][70]);
24.void saisie_colonne(int[20][70]);
25.
26.
27.
28./*******************************************************************************/
29. /*mise a zero de toutes les cases*/
30.
31.void mise_a_0(int t1[20][70],int t2[20][70])
32.{
33.int i,j;
34.for(i=0;i<20;i++)
35.{
36. for(j=0;j<70;j++)
37. {
38.
39. t1[i][j]=0;
40. t2[i][j]=0;
41. }
42.}
43.}
44.
45.
46.
47./*******************************************************************************/
48.
49.
50.void message()
51.{
52.printf("\n\t Appuer sur une touche pour fair evoluer les etapes");
53.printf("\n\n\t\tPour quitter a tout moment appuyer sur ESC");
54.}
55.
56.
57.
58./*******************************************************************************/
59. /*affichage de la fenetre*/
60.
61.void fenetre()
62.{
63.textbackground(1);
64.textcolor(14);
65.window(5,2,74,22);
66.gotoxy(20,1);
67.clrscr();
68.}
69.
70.
71./*******************************************************************************/
72. /*nettoie la fenetre*/
73.
74.void clear_fenetre()
75.{
76.window(1,1,80,25);
77.textbackground(0);
78.textcolor(7);
79.clrscr();
80.}
81.
82.
83./*******************************************************************************/
84. /*affiche les cellules*/
85.
86.
87.void affiche(int t1[20][70])
88.{
89.int i,j;
90.clrscr();
91._setcursortype(_NOCURSOR);
92.textcolor(14);
93.for(i=0;i<20;i++)
94.{
95. for(j=0;j<70;j++)
96. {
97. if(t1[i][j]==1){cprintf("X");}else{cprintf(" ");}
98. }
99.}
100.printf(" ");
101.}
102.
103.
104./*******************************************************************************/
105. /*test de fin de saisie*/
106.
107.int test(int t1[20][70])
108.{
109.int r;
110.clear_fenetre();
111.fenetre();
112.affiche(t1);
113.printf("\n\t\tArreter la saisie : ESC");
114.printf("\n\n\t\tContinuer : C");
115.do
116.{
117.switch(getch())
118.{
119.case 27:r=0;clear_fenetre();break;
120.case 'c':
121.case 'C':r=1;clear_fenetre();break;
122.default:printf("\a");r=2;
123.}
124.
125.}while((r!=1)&&(r!=0));
126.return r;
127.}
128.
129.
130./*******************************************************************************/
131. /*saisie des coordonnes des cellules*/
132.
133.void saisie(int t1[20][70])
134.{
135.int x,y;
136.textcolor(14);
137.do
138.{
139.fenetre();
140.affiche(t1);
141.do
142.{
143.clear_fenetre();
144.fenetre();
145.affiche(t1);
146._setcursortype(_NORMALCURSOR);
147.gotoxy(2,20);
148.printf("\n\n\n\t\tLigne:");
149.scanf("%d",&x);
150.}while((x<1)||(x>20));
151.
152.do
153.{
154.clear_fenetre();
155.fenetre();
156.affiche(t1);
157._setcursortype(_NORMALCURSOR);
158.gotoxy(15,20);
159.printf("\n\n\n\t\tColonne:");
160.scanf("%d",&y);
161.}while((y<1)||(y>70));
162.
163.t1[x-1][y-1]=1;
164.
165.affiche(t1);
166.}while(test(t1)!=0);
167.textcolor(8);
168.}
169.
170.
171./*******************************************************************************/
172. /*saisie par colonne*/
173.
174.void saisie_colonne(int t1[20][70])
175.{int c,l1,l2,i;
176.textcolor(14);
177.do
178.{
179.fenetre();
180.affiche(t1);
181.
182.do
183.{
184.clear_fenetre();
185.fenetre();
186.affiche(t1);
187._setcursortype(_NORMALCURSOR);
188.gotoxy(2,20);
189.printf("\n\n\n\t\tSaisir la colonne :");
190.scanf("%d",&c);
191.}while((c<1)||(c>70));
192.
193.
194.do
195.{
196.clear_fenetre();
197.fenetre();
198.affiche(t1);
199._setcursortype(_NORMALCURSOR);
200.gotoxy(15,20);
201.printf("\n\n\n\t\tSaisir ligne debut :");
202.scanf("%d",&l1);
203.}while((l1<1)||(l1>20));
204.
205.
206.do
207.{
208.clear_fenetre();
209.fenetre();
210.affiche(t1);
211._setcursortype(_NORMALCURSOR);
212.gotoxy(15,20);
213.printf("\n\n\n\t\tSaisir ligne fin :");
214.scanf("%d",&l2);
215.}while((l2<1)||(l2>20));
216.if(l1>l2){permut(&l1,&l2);}
217.
218.for(i=l1;i<=l2;i++)
219.{
220.t1[i-1][c-1]=1;
221.}
222.affiche(t1);
223.
224.}while(test2(t1)!=0);
225.
226.
227.textcolor(8);
228.}
229.
230.
231./*******************************************************************************/
232. /*saisie par ligne*/
233.
234.void saisie_ligne(int t1[20][70])
235.{int l,c1,c2,i;
236.textcolor(14);
237.do
238.{
239.fenetre();
240.affiche(t1);
241.
242.do
243.{
244.clear_fenetre();
245.fenetre();
246.affiche(t1);
247._setcursortype(_NORMALCURSOR);
248.gotoxy(2,20);
249.printf("\n\n\n\t\tSaisir la ligne :");
250.scanf("%d",&l);
251.}while((l<1)||(l>20));
252.
253.
254.do
255.{
256.clear_fenetre();
257.fenetre();
258.affiche(t1);
259._setcursortype(_NORMALCURSOR);
260.gotoxy(15,20);
261.printf("\n\n\n\t\tSaisir colonne debut :");
262.scanf("%d",&c1);
263.}while((c1<1)||(c1>70));
264.
265.
266.do
267.{
268.clear_fenetre();
269.fenetre();
270.affiche(t1);
271._setcursortype(_NORMALCURSOR);
272.gotoxy(15,20);
273.printf("\n\n\n\t\tSaisir colonne fin :");
274.scanf("%d",&c2);
275.}while((c2<1)||(c2>70));
276.if(c1>c2){permut(&c1,&c2);}
277.
278.for(i=c1;i<=c2;i++)
279.{
280.t1[l-1][i-1]=1;
281.}
282.
283.affiche(t1);
284.
285.}while(test2(t1)!=0);
286.
287.
288.textcolor(8);
289.}
290.
291.
292./*******************************************************************************/
293. /*test de fin de saisie*/
294.
295.int test2(int t1[20][70])
296.{
297.int r;
298.clear_fenetre();
299.fenetre();
300.affiche(t1);
301.printf("\n\t\tArreter la saisie : ESC");
302.printf("\n\n\t\tContinuer : C");
303.do
304.{
305.switch(getch())
306.{
307.case 27:r=0;clear_fenetre();break;
308.case 'c':
309.case 'C':r=1;clear_fenetre();menu_saisie(t1);break;
310.default:printf("\a");r=2;
311.}
312.
313.}while((r!=1)&&(r!=0));
314.return r;
315.}
316.
317.
318./*******************************************************************************/
319. /*menu de la saisie*/
320.
321.void menu_saisie(int t1[20][70])
322.{
323.
324.clrscr();
325._setcursortype(_NOCURSOR);
326.textcolor(10);
327.cprintf("\n\n LE JEU DE LA VIE DE CONWAY");
328.printf("\n\n\n\n\tVous desirez saisir :");
329.printf("\n\n\n\n 1 : Cellule par cellule\n\n");
330.printf(" 2 : Par ligne de cellules\n\n");
331.printf(" 3 : Par colonne de cellules\n\n");
332.printf("\n\n\n\n Faites votre choix...");
333.switch(getch())
334.{
335.case '1':clear_fenetre();saisie(t1);break;
336.case '2':clear_fenetre();saisie_ligne(t1);break;
337.case '3':clear_fenetre();saisie_colonne(t1);break;
338.}
339.}
340.
341.
342./*******************************************************************************/
343. /*affecte l etat precedent de la generation*/
344.
345.void affect_etat_precedent(int t1[20][70],int t2[20][70])
346.{
347.int i,j;
348.
349.for(i=0;i<20;i++)
350.{
351. for(j=0;j<70;j++)
352. {
353. t2[i][j]=t1[i][j];
354. }
355.}
356.}
357.
358.
359./*******************************************************************************/
360. /*affecte l etat de la generation suivante*/
361.
362.void affect_etat_suivant(int t1[20][70],int t2[20][70])
363.{
364.int i,j;
365.
366.for(i=0;i<20;i++)
367.{
368. for(j=0;j<70;j++)
369. {
370. t1[i][j]=t2[i][j];
371. }
372.}
373.}
374.
375.
376./*******************************************************************************/
377. /*calcul du nombre de cellules voisines*/
378.
379.void calcul_cellule(int t1[20][70],int t2[20][70])
380.{
381.int i,j,a;
382.
383.for(i=0;i<20;i++)
384.{
385. for(j=0;j<70;j++)
386. {
387. if((i==0)&&(j==0))
388. {
389. a=t1[i][j+1]+t1[i+1][j]+t1[i+1][j+1]+t1[i][69]+t1[i+1][69]+t1[19][j]+t1[19][j+1]+t1[19][69];
390. }
391.
392. if((i!=0)&&(j!=0)&&(i!=19)&&(j!=69))
393. {
394. a=t1[i-1][j-1]+t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i+1][j-1]+t1[i][j-1];
395. }
396.
397. if((i==0)&&(j!=0)&&(j!=69))
398. {
399. a=t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i+1][j+1]+t1[i][j+1]+t1[19][j-1]+t1[19][j]+t1[19][j+1];
400. }
401.
402. if((i==0)&&(j==69))
403. {
404. a=t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i][0]+t1[i+1][0]+t1[19][0]+t1[19][j]+t1[19][j-1];
405. }
406.
407. if((i==19)&&(j==0))
408. {
409. a=t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1]+t1[i][69]+t1[i-1][69]+t1[0][j]+t1[0][j+1]+t1[0][69];
410. }
411.
412. if((i==19)&&(j!=0)&&(j!=69))
413. {
414. a=t1[i][j-1]+t1[i][j+1]+t1[i-1][j-1]+t1[i-1][j]+t1[i-1][j+1]+t1[0][j]+t1[0][j-1]+t1[0][j+1];
415. }
416.
417. if((i==19)&&(j==69))
418. {
419. a=t1[i][j-1]+t1[i-1][j-1]+t1[i-1][j]+t1[0][j]+t1[0][j-1]+t1[i][0]+t1[i-1][0]+t1[0][0];
420. }
421.
422. if((i!=0)&&(i!=19)&&(j==0))
423. {
424. a=t1[i-1][j]+t1[i-1][j+1]+t1[i][j+1]+t1[i+1][j+1]+t1[i+1][j]+t1[i][69]+t1[i-1][69]+t1[i+1][69];
425. }
426.
427. if((i!=0)&&(i!=19)&&(j==69))
428. {
429. a=t1[i-1][j]+t1[i-1][j-1]+t1[i][j-1]+t1[i+1][j-1]+t1[i+1][j]+t1[i][0]+t1[i-1][0]+t1[i+1][0];
430. }
431.
432.
433. if((t1[i][j]==0)&&(a==3)){t2[i][j]=1;}
434. if((t1[i][j]==1)&&((a==2)||(a==3))){t2[i][j]=1;}
435. if((t1[i][j]==1)&&((a==1)||(a==0)||(a>3))){t2[i][j]=0;}
436. }
437. }
438.}
439.
440.
441.
442./*******************************************************************************/
443. /*l affichage aleatoire*/
444.
445.void alea(int t1[20][70])
446.{
447.int i,j;
448.randomize();
449.
450.for(i=0;i<20;i++)
451.{
452. for(j=0;j<70;j++)
453. {
454. t1[i][j]=random(2);
455. }
456.}
457.}
458.
459.
460./*******************************************************************************/
461. /*permutation*/
462.
463.void permut(int *a,int *b)
464.{
465.int aux;
466.aux=*a;
467.*a=*b;
468.*b=aux;
469.}
470.
471.
472./*******************************************************************************/
473.
474.
475.void accueil(int t1[20][70])
476.{int k;
477.clrscr();
478._setcursortype(_NOCURSOR);
479.textcolor(10);
480.cprintf("\n\n LE JEU DE LA VIE DE CONWAY");
481.printf("\n\n\n\n\tVous desirez simuler le jeu de la vie avec :");
482.printf("\n\n\n\n 1 : Saisie des coordonnees des cellules\n\n");
483.printf(" 2 : Affichage aleatoire des cellules");
484.printf("\n\n\n\n Faites votre choix...");
485.textcolor(12);
486.cprintf("\n\n\n\n Realise par 2PAC esgi (2pac 4 ever!!)");
487.do{
488.switch(getch())
489.{
490.case '1':clear_fenetre();menu_saisie(t1);k=0;break;
491.case '2':clear_fenetre();alea(t1);k=0;break;
492.default:printf("\a");k=2;
493.}
494.}while(k==2);
495.}
496.
497.
498./*******************************************************************************/
499. /*pour sortir du programme*/
500.
501.int sortie()
502.{int k;
503.clrscr();
504.clear_fenetre();
505.textcolor(10);
506.cprintf("\n\n LE JEU DE LA VIE DE CONWAY");
507.printf("\n\n\n\n\tVous desirez :");
508.printf("\n\n\n\n 1 : Quitter le jeu de la vie\n\n");
509.printf(" 2 : Recommencer");
510.printf("\n\n\n\n Faites votre choix...");
511.textcolor(12);
512.cprintf("\n\n\n\n Realise par 2PAC esgi (2pac 4 ever!!)");
513.do
514.{
515.switch(getch())
516.{
517.case '1':k=0;break;
518.case '2':k=1;break;
519.default:printf("\a");k=2;
520.}
521.}while((k!=0)&&(k!=1));
522.return k;
523.}
524.
525./*******************************************************************************/
526. /*la phase de saisie*/
527.
528.void phase_saisie(int t1[20][70],int t2[20][70])
529.{
530.mise_a_0(t1,t2);
531.accueil(t1);
532.fenetre();
533.affiche(t1);
534.}
535.
536.
537./*******************************************************************************/
538. /*la phase de simualtion*/
539.
540.void phase_simulation(int t1[20][70],int t2[20][70])
541.{
542.int cpt=0;
543.do{
544.if(cpt==0){getch();}
545.
546. affect_etat_precedent(t1,t2);
547. calcul_cellule(t1,t2);
548. affect_etat_suivant(t1,t2);
549. affiche(t1);
550. message();
551.
552. cpt++;
553.}while(getch()!=27);
554.}
555.
556.
557.
558./*******************************************************************************/
559.
560.
561./******************************************************************************/
562./******************** Le menu ******************************/
563./******************** ******************************/
564./******************************************************************************/
565.
566.
567.
568.main()
569.{
570.
571.do
572.{
573.int ta[20][70],te[20][70],cpt=0;
574.phase_saisie(ta,te);
575.phase_simulation(ta,te);
576.}while(sortie()==1);
577.
578.}
1
bubull97 Messages postés 133 Date d'inscription vendredi 1 octobre 2010 Statut Membre Dernière intervention 19 février 2014 10
21 août 2011 à 16:36
Salut

Je suis actuellement en train de suivre des études en programmation, j'ai fini ma première avec 14,7/20 en langage C.

Mais je pense pas que quelqu'un t'aidera à distance, ton raisonnement est assez compliqué et il n'y a pas beaucoup de vrais programmeurs ici...

Bonne continuation

-1
don_josep Messages postés 22 Date d'inscription jeudi 21 juin 2007 Statut Membre Dernière intervention 22 août 2011 2
21 août 2011 à 16:45
et pourquoi pas vous m'aider?
0
bubull97 Messages postés 133 Date d'inscription vendredi 1 octobre 2010 Statut Membre Dernière intervention 19 février 2014 10
21 août 2011 à 16:48
Parce qu'avant de coder en C, il faut faire un diagramme d'action (la partie analyse de la programmation)
0
nicocorico Messages postés 799 Date d'inscription dimanche 19 juin 2011 Statut Membre Dernière intervention 3 juillet 2018 138
Modifié par nicocorico le 21/08/2011 à 16:54
Il n'y a aucun problème pour t'aider, simplement ce que tu demandes là peut prendre plusieurs jours, et tu risque d'avoir du mal à trouver quelqu'un pour te le faire gracieusement !
De plus ton texte interminable est cousu de fautes et de mots manquants, ce qui ne simplifie pas la tâche...
0
Utilisateur anonyme
21 août 2011 à 16:59
Il ne faut pas exagérer. Il y a beaucoup de vrais programmeurs sur comment ça marche et ils seront probablement capable de l'aider !

Il faut simplement qu'un d'entre eux aient le temps d'analyser son code, mais après je suis certain qu'il trouvera de l,aide sur comment ça marche.

Bon après s'il veut un travail tout fait c'est pas la même chose, mais si c'est pour se faire expliquer des concepts avec lesquels il a de la difficulté il trouvera tout ce qu'il a besoin sur CCM.

@++ : )
0