Le topic sur l'informatique !

Ici on parle de tout, mais surtout de rien !!
Répondre
Avatar du membre
gg1212
Administrateur du site
Messages : 3380
Enregistré le : 26 oct. 2010, 21:12
Tracteur(s) : Deutz Agrotron 118
Deutz D7206
NH lm1133
Prénom : Jérôme
Localisation : Belgique

Re: Le topic sur l'informatique !

Message par gg1212 »

Examen de C demain, quelque exercices de révisions bien évidemment, et c'est la catasrtophe :pascontent2:

Alors l'énoncé : http://img843.imageshack.us/img843/5342 ... ndeuse.jpg
L'énoncé en gros c'est une tondeuse qui doit tondre un terrain en suivant une direction qu'on détermine en fonction d'un nombre généré aléatoirement. Et quand la tondeuse arrive au bout de terrain elle recule d' 1-8 case et repart dans une nouvelle direction.

Le générateur de nombre on nous l'a fourni donc ca c'est ok.
Par contre l'amorce et le point initiale je l'ai pas mais bon ca doit pas etre bien grave, la peut importe l'amorce et le point de départ elle ne tond pas certaine parti et donc boucle...

Et le code commenté :D

Code : Tout sélectionner

#include<stdio.h>
#include<math.h>
main()
{
	int i,cmpt,fini=1,x,y,amorce=2345,j,pelouse[11][11];
	float z;
	float hasard(int*);
	void deplacement(float,int*,int*,int[][11]);
	int estTondu(int[][11]);
	//FILE *fres;
	//fres=fopen("cpecq003.res","w");
	//initialisation de la pelouse
	i=0;
	j=0;
	for(i=0;i<=10;i++)
	{
		for(j=0;j<=10;j++)
		{
			pelouse[i][j]=0;
		}
	}
	//Remplissage des champs deja tondu (1,1) (1,10) (10,1) (10,10)
	pelouse[1][1]=1;
	pelouse[1][10]=1;
	pelouse[10][1]=1;
	pelouse[10][10]=1;
	//remplissage de deux ligne des bord en x=0 et y=0
	i=0;
	for(i=0;i<=10;i++)
	{
		pelouse[i][0]=1;
		pelouse[0][i]=1;
	}
	x=1;
	y=1;
	cmpt=0;
	// Tant que la pelouse n'est pas entièrement tondu
	while(fini==1)
	{
		//generateur d'un nombre pseud-aleatoire compris entre 0 et 1
		z=hasard(&amorce);
		printf("z: %9.7f\n",z);
		//appel de la fonction deplacement
		deplacement(z,&x,&y,pelouse);
		//printf("z: %9.7f\n",z);
		//appel de la fonction qui renvoie 0 si tout le terrain est tondu et stop la boucle
		fini=estTondu(pelouse);
		//boucle pour un affichage console pour essayer de trouver d'ou vient le problème
		for(i=1;i<=10;i++)
		{
			for(j=1;j<=10;j++)
			{
				if(j==x && i==y)
				{
					printf("2 ");
				}
				else
				{
					printf("%d ",pelouse[j][i]);
				}
			}
			printf("\n");
		}
		//affichage d'information pour essayer de trouver le probleme
		cmpt++;
		printf("[%2d;%2d]\n",x,y);
		printf("cmpt : %d\n",cmpt);
/*
		if(cmpt==2)
		{
			fini=0;
		}
*/
	}
}
//Fonction qui genere un nombre pseudo aleatoire en fonction de l'amorce passé en argument, la fonction est donnée par le prof.
float hasard(int *amorce)
{
	int a,m;
	m=pow(2,20);
	a=pow(2,10)+3;
	*amorce=(a*(*amorce))%m;
	return (float)(*amorce)/(float)(m);
}
//Fonction deplacement qui deplace la tondeuse dans une direction en fonction du nombre Z generé aleatoirement
//Et qui la fait reculer d'un nombre de case entre 1 et 8 genéré aussi grace a z
void deplacement(float z, int *x, int *y, int pelouse[][11])
{
	FILE *fres;
	fres=fopen("cpecq003.res","w");
	int recul,i;
	recul=(1+(8-1)*z);
	printf("recul : %d\n",recul);
	if(z<0.25)
	{
		while(*x<10)
		{
			*x=*x+1;
			pelouse[*x][*y]=1;
			fprintf(fres,"[%2d;%2d] ",*x,*y);
		}
		for(i=1;i<=recul;i++)
		{
			*x=*x-1;
			pelouse[*x][*y]=1;
		}
		printf("recul [%2d;%2d]\n",*x,*y);
		fprintf(fres," recul [%2d;%2d]\n",*x,*y);
	}
	else
	{
		if(z<0.5)
		{
			while(*x>1)
			{
				*x=*x-1;
				pelouse[*x][*y]=1;
				fprintf(fres,"[%2d;%2d] ",*x,*y);
			}
			for(i=1;i<=recul;i++)
			{
				*x=*x+1;
				pelouse[*x][*y]=1;
			}
			printf("recul [%2d;%2d]\n",*x,*y);
			fprintf(fres," recul [%2d;%2d]\n",*x,*y);
		}
		else
		{
			if(z<0.75)
			{
				while(*y<10)
				{
					*y=*y+1;
					pelouse[*x][*y]=1;
					fprintf(fres,"[%2d;%2d] ",*x,*y);
				}
				for(i=1;i<=recul;i++)
				{
					*y=*y-1;
					pelouse[*x][*y]=1;
				}
				printf("recul [%2d;%2d]\n",*x,*y);
				fprintf(fres," recul [%2d;%2d]\n",*x,*y);
			}
			else
			{
				while(*y>1)
				{
					*y=*y-1;
					pelouse[*x][*y]=1;
					fprintf(fres,"[%2d;%2d] ",*x,*y);
				}
				for(i=1;i<=recul;i++)
				{
					*y=*y+1;
					pelouse[*x][*y]=1;
				}
				printf("recul [%2d;%2d]\n",*x,*y);
				fprintf(fres," recul [%2d;%2d]\n",*x,*y);
			}
		}
	}
	fclose(fres);
}
//Fonction qui permet de determiné si l'entierete du terrain est tondu.
int estTondu(int pelouse[][11])
{
	int i,j,retour=0;
	i=0;
	j=0;
	for(i=0;i<=10;i++)
	{
		for(j=0;j<=10;j++)
		{
			if(pelouse[i][j]==0)
			{
				retour=1;
			}
		}
	}
	return retour;
}
Charles si tu aurait un peu de temps pour regarder a ca, ca serait bien gentil de ta part :)
Restauration de notre benne panien 12 Tonnes 2 essieux : Reportage photo et Vidéo
Avatar du membre
D40s
Membre honoraire
Messages : 3708
Enregistré le : 13 juil. 2010, 19:58
Prénom : Michel
Localisation : Tournai "Belgique"
Contact :

Re: Le topic sur l'informatique !

Message par D40s »

:( j'y comprends rien du tout :inlove: .Dite moi que je ne suis pas le seul :taistoi: .

Bon s'en blaguer , bonne chance gégé , j'espère que tu auras l'aide voulu ;-) :super:
Pas d'agriculture sans avenir , pas d'avenir sans agriculture
Avatar du membre
deuch86
Membre honoraire
Messages : 3436
Enregistré le : 13 nov. 2009, 13:09
Prénom : Romain
Localisation : 86 Haims
Contact :

Re: Le topic sur l'informatique !

Message par deuch86 »

Bienvenue au club ceci est pire que du chinois pour moi :pleur4:
Avatar du membre
Charles
Administrateur du site
Messages : 13276
Enregistré le : 12 juil. 2007, 08:42
Tracteur(s) : Deutz D4506
Prénom : Charles-Henri
Localisation : 27
Contact :

Re: Le topic sur l'informatique !

Message par Charles »

Je regarde ça demain ^^
Avatar du membre
Nicodeutzfan
Membre honoraire
Messages : 3599
Enregistré le : 23 oct. 2010, 16:04
Tracteur(s) : Deutz D50
D4506
D4507
Agrostar 6.38
Prénom : Nicolas
Localisation : La Reid, Belgique

Re: Le topic sur l'informatique !

Message par Nicodeutzfan »

deuch86 a écrit :Bienvenue au club ceci est pire que du chinois pour moi :pleur4:
Pareil lol
Avatar du membre
D40s
Membre honoraire
Messages : 3708
Enregistré le : 13 juil. 2010, 19:58
Prénom : Michel
Localisation : Tournai "Belgique"
Contact :

Re: Le topic sur l'informatique !

Message par D40s »

:mdr3: si ça continue , c'est nous qui devrions retourner à l'école :mrgreen: :mrgreen:
Pas d'agriculture sans avenir , pas d'avenir sans agriculture
Avatar du membre
gg1212
Administrateur du site
Messages : 3380
Enregistré le : 26 oct. 2010, 21:12
Tracteur(s) : Deutz Agrotron 118
Deutz D7206
NH lm1133
Prénom : Jérôme
Localisation : Belgique

Re: Le topic sur l'informatique !

Message par gg1212 »

:hehe:

C'est bon charles, je vais faire un autre exercice et tempi pour celui la, j'ai examen demain :malin2:
On verra bien demain comment ca se passe ;)
Restauration de notre benne panien 12 Tonnes 2 essieux : Reportage photo et Vidéo
Avatar du membre
calimero 56
Membre
Messages : 72
Enregistré le : 06 mai 2011, 11:40
Tracteur(s) : deutz 6006
Prénom : franck

Re: Le topic sur l'informatique !

Message par calimero 56 »

les cookies ce sont les petits gâteaux aux pépites de chocolat :mdr3: :sivousme:
Avatar du membre
Charles
Administrateur du site
Messages : 13276
Enregistré le : 12 juil. 2007, 08:42
Tracteur(s) : Deutz D4506
Prénom : Charles-Henri
Localisation : 27
Contact :

Re: Le topic sur l'informatique !

Message par Charles »

Déjà à première vue, pour les déplacement, je ne ferais pas de else à chaque cas.
Fait un if pour gérer les cas <0.25 etc... Ou mieux un case/switch (même si c'est la même chose), mais je sais pas si en C tu peux en faire.

en faisant ça, pas d’ambiguïté, tu sais dans quelle condition tu rentres :)
je me suis envoyé ton sujet sur mon mail du taff vu que j'ai pas acces a imageshack :(
Avatar du membre
Charles
Administrateur du site
Messages : 13276
Enregistré le : 12 juil. 2007, 08:42
Tracteur(s) : Deutz D4506
Prénom : Charles-Henri
Localisation : 27
Contact :

Re: Le topic sur l'informatique !

Message par Charles »

gg1212 a écrit ::hehe:

C'est bon charles, je vais faire un autre exercice et tempi pour celui la, j'ai examen demain :malin2:
On verra bien demain comment ca se passe ;)

erf :(

désolé :(

bon courage alors :D
Répondre