int main (void){
srand(time(NULL));
initialisation(7,8);
return 0;
}
void initialisation (int n, int m){
int k,i,j,nbcaseAzero,x,y,d,maxl,maxh,stockvaleur;
int **laby;
maxl=3D2*n+1;
maxh=3D2*m+1;
laby=3Dallouer2d(maxl,maxh);
nbcaseAzero=3Dn*m;
k=3D0;
for (i=3D0;i<maxl;i++){
for (j=3D0;j<maxh; j++){
if ((i%2!=3D0) && j%2!=3D0){
laby[i][j]=3Dk++;
}
else laby[i][j]=3D-1;
}
}
afficher (maxh , maxl, laby);
while (nbcaseAzero>0){
x=3D(rand()%(maxl-2)) + 1;
y=3D(rand() %(maxh-2)) + 1;
while ((x&1)=3D=3D(y&1)){
x=3D(rand()%(maxl-2)) + 1;
y=3D(rand() %(maxh-2)) + 1;
}
if (x&1){
d=3Dlaby[x][y-1]-laby[x][y+1];
if (d>0) {
laby[x][y]=3Dlaby[x][y+1];
stockvaleur=3Dlaby[x][y+1];
propager4(x,(y-1),laby[x][y+1], stockvaleur,nbcaseAzero,laby);
compte_casezero(nbcaseAzero,maxh,maxl,laby);
}
else if (d<0){
laby[x][y]=3Dlaby[x][y-1];
stockvaleur=3Dlaby[x][y-1];
propager4(x,(y+1),laby[x][y-1], stockvaleur,nbcaseAzero,laby);
compte_casezero(nbcaseAzero,maxh,maxl,laby);
afficher (maxh , maxl, laby);
}
}
else if (y&1){
d=3Dlaby[x-1][y]-laby[x+1][x];
if (d>0) {
laby[x][y]=3Dlaby[x+1][y];
stockvaleur=3Dlaby[x+1][y];
propager4((x-1),y,laby[x+1][y], stockvaleur,nbcaseAzero,laby);
compte_casezero(nbcaseAzero,maxh,maxl,laby);
}
else if (d<0){
laby[x][y]=3Dlaby[x-1][y];
stockvaleur=3Dlaby[x-1][y];
propager4((x+1),y,laby[x-1][y], stockvaleur,nbcaseAzero,laby);
compte_casezero(nbcaseAzero,maxh,maxl,laby);
}
}
}
afficher (maxh , maxl, laby);
}
int **allouer2d(int l,int h){
int i, **t;
t=3Dmalloc(h*sizeof*t);
assert(t);
for (i=3D0;i<h;i++){
t[i]=3Dmalloc (l*sizeof*t[i]);
assert (t[i]);
}
return t;
}
void liberer2d(int*** q,int h){
int i;
for (i=3D0;i<h;i++)
free(*q);
*q=3DNULL;
}
void propager(int x,int y,int nouvelvaleur,int ancienvaleur,int nb,int
**matrice) {
if (nb=3D=3D0) exit(0);
if(matrice[x][y]!=3Dancienvaleur) return;
matrice[x][y]=3Dnouvelvaleur;
}
void propager4(int x,int y,int nouvelvaleur,int ancienvaleur, int
nb ,int **matrice){
propager((x+1),y,nouvelvaleur,ancienvaleur,nb,matrice);
propager((x-1),y,nouvelvaleur,ancienvaleur,nb,matrice);
propager(x,(y+1),nouvelvaleur,ancienvaleur,nb,matrice);
propager(x,(y-1),nouvelvaleur,ancienvaleur,nb,matrice);
}
void afficher(int l, int h,int **pointeur){
int i,j;
for (i=3D0; i<h;i++){
for (j=3D0; j<l; j++){
printf ("%3d",pointeur[i][j]);
}
printf("\n");
}
printf("\n");
}
void Pcc(int x1,int y1,int x2,int y2,int v,int **L){
v=3Dv+1;
L[x1][y1]=3Dv;
if(x1=3D=3Dx2&&y1=3D=3Dy2) return;
if (v < L[x1+1][y1] || L[x1+1][y1] =3D=3D 0)
Pcc(x1, y1+1, x2, y2, v,L);
if (v < L[x1-1][y1] || L[x1-1][y1] =3D=3D 0)
Pcc(x1, y1-1, x2, y2, v,L);
if (v < L[x1][y1+1] || L[x1][y1+1] =3D=3D 0)
Pcc(x1+1, y1, x2, y2, v,L);
if (v < L[x1][y1-1] || L[x1][y1-1] =3D=3D 0)
Pcc(x1-1, y1, x2, y2, v,L);
}
void compte_casezero(int m, int l, int h,int **matrice){
int i,j;
for (i=3D0;i<h;i++)
for (j=3D0; j<l; j++)
if (matrice[i][j]=3D=3D0 && (i&1) && (j&1))
m--;
printf("%d\n",m);
}
voila , il se trouve que je ne sais vraiment pas pourquoi ma fonction
est infini, je pense que c'est a cause du return dans ma fonction
propager , mais je n'en sui pas sur, je suis blocker =E0 cette fonction
depuis 3 jour.
Svp aidez moi , j'utilise cette algo pour g=E9n=E9rer mon labyrinthe.
je suis un newbie dans la programmation C, merci de vos conseille , je vais réussir a m'ameliorer. euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
je suis un newbie dans la programmation C, merci de vos conseille , je
vais réussir a m'ameliorer.
euh !? auriez vous des idées de projet pour bien apprendre le C , du
plus facile au plus difficile ??
je suis un newbie dans la programmation C, merci de vos conseille , je vais réussir a m'ameliorer. euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
Charlie Gordon
"Harpo" a écrit dans le message de news: 466744cf$0$25943$
On Wed, 06 Jun 2007 14:16:09 -0700, Angelus wrote:
euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
Je conseillerais de commencer par le facile, voire le trivial, il n'y a pas de honte à commencer par 'Hello World!', tout le monde a commencé un jour. Ensuite récupérer les arguments de la ligne de commande, les afficher, mettons dans l'ordre inverse, compter leur nombre de caractères et ce genre de chose inutiles mais faciles à tester. Réécrire des programmes simples, par exemple des standards unix comme wc ou tac, arrivé là tu aura d'autres idées pour continuer. Pour écrire des fonctions récursives, l'affichage d'une hierarchie de directories et ce genre de choses. Je pense qu'il faut éviter de commencer par des choses compliquées.
Bref, lire le Kernighan et Ritchie et faire les exercices ;-)
Chqrlie.
"Harpo" <invalid@invalid.invalid> a écrit dans le message de news:
466744cf$0$25943$ba4acef3@news.orange.fr...
On Wed, 06 Jun 2007 14:16:09 -0700, Angelus wrote:
euh !? auriez vous des idées de projet pour bien apprendre le C , du
plus facile au plus difficile ??
Je conseillerais de commencer par le facile, voire le trivial, il n'y a
pas de honte à commencer par 'Hello World!', tout le monde a commencé un
jour.
Ensuite récupérer les arguments de la ligne de commande, les afficher,
mettons dans l'ordre inverse, compter leur nombre de caractères et ce
genre de chose inutiles mais faciles à tester.
Réécrire des programmes simples, par exemple des standards unix comme
wc ou tac, arrivé là tu aura d'autres idées pour continuer.
Pour écrire des fonctions récursives, l'affichage d'une hierarchie de
directories et ce genre de choses. Je pense qu'il faut éviter de
commencer par des choses compliquées.
Bref, lire le Kernighan et Ritchie et faire les exercices ;-)
"Harpo" a écrit dans le message de news: 466744cf$0$25943$
On Wed, 06 Jun 2007 14:16:09 -0700, Angelus wrote:
euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
Je conseillerais de commencer par le facile, voire le trivial, il n'y a pas de honte à commencer par 'Hello World!', tout le monde a commencé un jour. Ensuite récupérer les arguments de la ligne de commande, les afficher, mettons dans l'ordre inverse, compter leur nombre de caractères et ce genre de chose inutiles mais faciles à tester. Réécrire des programmes simples, par exemple des standards unix comme wc ou tac, arrivé là tu aura d'autres idées pour continuer. Pour écrire des fonctions récursives, l'affichage d'une hierarchie de directories et ce genre de choses. Je pense qu'il faut éviter de commencer par des choses compliquées.
Bref, lire le Kernighan et Ritchie et faire les exercices ;-)
Chqrlie.
Charlie Gordon
"Harpo" a écrit dans le message de news: 466651da$0$25936$
On Wed, 06 Jun 2007 01:32:59 +0200, Thierry B wrote:
Même pas vrai. La meilleur méthode, c'est écrire d'abord les commentaires, laisser mariner un ou deux jours, et revenir mettre le code...
Voilà, tout est dans la marinade. Après on peut enlever les commentaires superflus.
Et le code superflu
Et les bugs...
Et les fautes d'orthographe.
Chqrlie
"Harpo" <invalid@invalid.invalid> a écrit dans le message de news:
466651da$0$25936$ba4acef3@news.orange.fr...
On Wed, 06 Jun 2007 01:32:59 +0200, Thierry B wrote:
Même pas vrai. La meilleur méthode, c'est écrire d'abord les
commentaires, laisser mariner un ou deux jours, et revenir
mettre le code...
Voilà, tout est dans la marinade. Après on peut enlever les commentaires
superflus.
"Harpo" a écrit dans le message de news: 466651da$0$25936$
On Wed, 06 Jun 2007 01:32:59 +0200, Thierry B wrote:
Même pas vrai. La meilleur méthode, c'est écrire d'abord les commentaires, laisser mariner un ou deux jours, et revenir mettre le code...
Voilà, tout est dans la marinade. Après on peut enlever les commentaires superflus.
Et le code superflu
Et les bugs...
Et les fautes d'orthographe.
Chqrlie
Antoine Leca
En news:, Angelus va escriure:
je suis un newbie dans la programmation C, merci de vos conseille , je vais réussir a m'ameliorer. euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
Plus facile : aller chez le libraire Un peu plus dur : acheter le K&R Plus dur : le lire Le plus difficile : faire les exercices
Antoine
En news:1181164569.063072.294740@d30g2000prg.googlegroups.com,
Angelus va escriure:
je suis un newbie dans la programmation C, merci de vos conseille , je
vais réussir a m'ameliorer.
euh !? auriez vous des idées de projet pour bien apprendre le C , du
plus facile au plus difficile ??
Plus facile : aller chez le libraire
Un peu plus dur : acheter le K&R
Plus dur : le lire
Le plus difficile : faire les exercices
je suis un newbie dans la programmation C, merci de vos conseille , je vais réussir a m'ameliorer. euh !? auriez vous des idées de projet pour bien apprendre le C , du plus facile au plus difficile ??
Plus facile : aller chez le libraire Un peu plus dur : acheter le K&R Plus dur : le lire Le plus difficile : faire les exercices
Antoine
Antoine Leca
En news:46676858$0$22331$, Charlie Gordon va escriure:
Harpo a écrit dans le message de news: 466651da$0$25936$
Voilà, tout est dans la marinade. Après on peut enlever les commentaires superflus.
Et le code superflu
Et les bugs...
<HS> Euh, ce n'est pas sur le même plan (en général).
Pour « enlever » les bogues, il ne suffit pas de supprimer du code (OK, des fois cela suffit ;-)), il faut plus souvent réécrire, parfois modifier la structure (lorsque le bogue est en fait un bogue de conception) ou ajouter des verrues (bogue d'analyse, lorsqu'on a oublié un cas.)
Il est vrai que certains bogues (en C, surtout ceux liés à l'utilisation de strxxx ou de unsigned, aux variables non initialisées ou à l'absence de contrôle d'erreur; bref, les bogues de codage; et oui, je sais, c'est probablement la majorité de ceux que nous voyons) se corrigent comme des fôtes d'haurtogràfe, mais parfois c'est un peu plus subtil... </HS>
Antoine
En news:46676858$0$22331$426a74cc@news.free.fr, Charlie Gordon va escriure:
Harpo a écrit dans le message de news:
466651da$0$25936$ba4acef3@news.orange.fr...
Voilà, tout est dans la marinade. Après on peut enlever les
commentaires superflus.
Et le code superflu
Et les bugs...
<HS>
Euh, ce n'est pas sur le même plan (en général).
Pour « enlever » les bogues, il ne suffit pas de supprimer du code (OK, des
fois cela suffit ;-)), il faut plus souvent réécrire, parfois modifier la
structure (lorsque le bogue est en fait un bogue de conception) ou ajouter
des verrues (bogue d'analyse, lorsqu'on a oublié un cas.)
Il est vrai que certains bogues (en C, surtout ceux liés à l'utilisation de
strxxx ou de unsigned, aux variables non initialisées ou à l'absence de
contrôle d'erreur; bref, les bogues de codage; et oui, je sais, c'est
probablement la majorité de ceux que nous voyons) se corrigent comme des
fôtes d'haurtogràfe, mais parfois c'est un peu plus subtil...
</HS>
En news:46676858$0$22331$, Charlie Gordon va escriure:
Harpo a écrit dans le message de news: 466651da$0$25936$
Voilà, tout est dans la marinade. Après on peut enlever les commentaires superflus.
Et le code superflu
Et les bugs...
<HS> Euh, ce n'est pas sur le même plan (en général).
Pour « enlever » les bogues, il ne suffit pas de supprimer du code (OK, des fois cela suffit ;-)), il faut plus souvent réécrire, parfois modifier la structure (lorsque le bogue est en fait un bogue de conception) ou ajouter des verrues (bogue d'analyse, lorsqu'on a oublié un cas.)
Il est vrai que certains bogues (en C, surtout ceux liés à l'utilisation de strxxx ou de unsigned, aux variables non initialisées ou à l'absence de contrôle d'erreur; bref, les bogues de codage; et oui, je sais, c'est probablement la majorité de ceux que nous voyons) se corrigent comme des fôtes d'haurtogràfe, mais parfois c'est un peu plus subtil... </HS>
Antoine
Thierry B
--{ Antoine Leca a plopé ceci: }--
Plus facile : aller chez le libraire Un peu plus dur : acheter le K&R Plus dur : le lire Le plus difficile : faire les exercices
Dans le temps, il y avait un livre avec les solu^Wcheatcodes,
est-il encore édité, et mis à jour pour l'édition ANSI ?
-- - Ne buvez pas au volant, buvez à la bouteille.
--{ Antoine Leca a plopé ceci: }--
Plus facile : aller chez le libraire
Un peu plus dur : acheter le K&R
Plus dur : le lire
Le plus difficile : faire les exercices
Dans le temps, il y avait un livre avec les solu^Wcheatcodes,
est-il encore édité, et mis à jour pour l'édition ANSI ?
--
- Ne buvez pas au volant, buvez à la bouteille.