A voir également:
- Exercice en C
- Comment trouver la correction d'un exercice - Forum Programmation
- Exercice pour apprendre à utiliser un ordinateur - Astuces et Solutions
- Exercice calculatrice en javascript ✓ - Forum Javascript
- Exercice word gratuit avec corrigé - Forum Word
- Triangle des textures exercice corrigé - Forum Loisirs / Divertissements
2 réponses
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
23 nov. 2005 à 19:27
23 nov. 2005 à 19:27
Fais une structure de damier formée d'un tableau de tableau (une matrice donc) :
Truc dans le genre. C'est fait à l'arrache et tu peux faire beaucoup mieux en C++ mais bon apparemment tu veux le faire en C... Donc va pour du C ;-)
//define pour le devenir d'une case #define ETOUFFEMENT 1 #define SURVIE 2 #define ISOLEMENT 3 #define RESTE_MORTE 4 #define NAISSANCE 5 //define pour l'état actuel d'une case #define EN_VIE 6 #define MORTE 7 #include <stdlib.h> #include <stdio.h> struct damier{ int** data; //les cases contiennent EN_VIE ou MORTE unsigned int nb_ligne; unsigned int nb_colonne; }; //initialise un damier avec toute les cases à l'état MORTE damier *new_damier(unsigned int nb_ligne,unsigned int nb_colonne){ unsigned int i; damier *d=(damier *)malloc(sizeof(struct damier)); d->data=(int **)malloc(nb_ligne*sizeof(int*)); for(i=0;i<nb_ligne;++i){ d->data[i]=(int *)malloc(nb_colonne*sizeof(int)); d->data[i][j]=MORTE; } } unsigned int get_nb_ligne(damier d){ return d.nb_ligne; } unsigned int get_nb_colonne(damier d){ return d.nb_colonne; } //Change la valeur d'une cellule (MORTE ou EN_VIE) set(damier *d,unsigned int indice_ligne,unsigned int indice_colonne, int etat){ d->data[indice_ligne][indice_colonne]=etat; } //Retourne l'état d'une case int get(damier d,unsigned int indice_ligne,unsigned int indice_colonne){ return d.data[indice_ligne][indice_colonne]; } //Etat de d[ndice_ligne][indice_colonne] à la prochaine itération //Retourne l'état de la cse à la prochaine itération (ETOUFFEMENT,...) int etat_suivant_cellule(damier d,unsigned int indice_ligne,unsigned int indice_colonne){ //c'est ici que les règles de survie etouffement...interviennent } //Affiche un damier void show_damier(damier d){ unsigned int nbl=get_nb_ligne(d); unsigned int nbc=get_nb_colonne(d); for(lcur=0;lcur<nbl;++lcur){ for(ccur=0;ccur<nbc;++ccur){ printf("%d\t",get(d,lcur,ccur)); } printf("\n"); } } //Calcule le prochain damier damier etat_suivant_damier(damier d){ unsigned int lcur,ccur; unsigned int nbl=get_nb_ligne(d); unsigned int nbc=get_nb_colonne(d); damier * res=new_damier(nbl,nbc); for(lcur=0;lcur<nbl;++lcur){ for(ccur=0;ccur<nbc;++ccur){ set(res,lcur,ccur,etat_suivant_cellule(d,lcur,ccur); } } return res; } int main(){ //... }
Truc dans le genre. C'est fait à l'arrache et tu peux faire beaucoup mieux en C++ mais bon apparemment tu veux le faire en C... Donc va pour du C ;-)