Probleme avec l'appelle des fonctions

Fermé
Shams243 Messages postés 24 Date d'inscription mercredi 25 mars 2020 Statut Membre Dernière intervention 11 mai 2020 - 10 mai 2020 à 15:50
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 11 mai 2020 à 08:30
bonjour;
au faite au debut j'avais l'intention d'appeller la fonction main dans une autre fonction, mais sa me donner une erreure d'ou je me suis dit de faire appelle a la meme fonction

#include <stdio.h>

int a=0;


//QUESTION 4
//i
int logique(int x, int y)
{
	if(x>y)
		printf("\n le plus agee a >>>> %dans\n", x);
	else if(x==y)
 		printf("\n vous avez tous deux le meme age\n");
	else
		printf("\n le plus grand a  >>>> %d ans\n", y);
}

//ii
int arithmetique(int x,int y)
{
	if(x>0 && x<5)
	{
		y+=1; //ici on augmente la valeur de y de 1 puis on la stock dans cette meme variable, unpeu comme une mise a jour
		x*=2; //ici on multiplie la valeur de x par 2 puis on la stock dans cette meme variable, unpeu comme une mise a jour
		printf("\n x multiplier par deux donne >> %d\n", x);
		printf("\n y augmenter de 1 vaut >> %d\n", y);
	}
	else
	{
		y/=2; //ici on divise la valeur de y par 2 puis on la stock dans cette meme variable, unpeu comme une mise a jour
		x%=2; //ici on divise la valeur de x et ensuite on garde le reste puis on la stock dans cette meme variable, unpeu comme une mise a jour
		printf("\n y diviser par deux vaut >> %d(division entiere)\n",y);
		printf("\n x modulo deux vaut >> %d\n", x);
	}
}

//QUESTION 5
int ver(int x)
{
	if(x>=0 && x<5)
	{
		printf("\n1\n");
		return(0);
	}
	else
		printf("\n0 \n");
}


//QUESTION  6
float moyenne(int a, int b, int c)
{
	float x;
	x=a+b+c;
	x/=3;
	printf("\n la moyenne est de %f \n", x);

}

// REGARDER A PARTIR D'ICI

//QUESTION 7
int coutphotocopies(int n)
{
	int cout=20;
	a+=n;
	if(a<-1)
	{
		printf("\nveuiller saisir un entier positif \n");
		printf("\nentrer une nouvelle fois le nbre de photocopie ->");
		scanf("%d",n);
		coutphotocopies(n);
	}
	else if(a>0 && a<=10)
	{
		printf("sa vous coute %d centime \n --------", cout);
		printf("\nvous etes a %d photocopie \n--------", a);
		printf("\nentrer une nouvelle fois le nbre de photocopie ->");
		scanf("%d",n);
		coutphotocopies(n);
	}
	else if(a>10 && a <=20)
	{
		printf("sa vous coute %d centime \n -------", cout-5);
		printf("\nvous etes a %d photocopie--------- \n", a);
		printf("\nentrer une nouvelle fois le nbre de photocopie ->");
		scanf("%d",n);
		coutphotocopies(n);
	}
	else
	{
		printf("sa vous coute %d centime \n---------", cout-10);
		printf("\nvous etes a %d photocopie \n---------\n", a);
		printf("\nentrer une nouvelle fois le nbre de photocopie ->");
		scanf("%d",n);
		coutphotocopies(n);
	}
}


int main(void)
{
	int x,X,Y,a,b,c,A,B,C;
	int cpt=0;
	

	printf("\nBIENVENUE DANS LE TP DE SHAMIRANI\n");
	printf("VEUILLER FAIRE VOTRE CHOIX :) ");

	printf("\n1. UTILISATION DE L'OPERATEUR LOGIQUE RELATIONNEL\n2. UTILISATION DE L'OPERATEUR ARITHMETIQUE");
	printf("\n3. VERIFIER SI x APPARTIENT A [0,5[\n4. CALCULER LA MOYENNE DE a,b,c");
	printf("\n5. SERVICE DE PHOTOCOPIE\n6. EXIT\n");

	scanf("%d",&cpt);

	switch(cpt)
	{
		case 1:
			printf("\n veuiller saisir la valeur de x --> ");
			scanf("%d", &X);
			printf("\n veuiller saisir la valeur de y --> ");
			scanf("%d", &Y);
			logique(X,Y);
			break;
		case 2:
			printf("\n veuiller saisir la valeur de x --> ");
			scanf("%d", &X);
			printf("\n veuiller saisir la valeur de y --> ");
			scanf("%d", &Y);
			arithmetique(X,Y);
			break;
		case 3:
			printf("\n veuiller saisir une valeur a verifier ");
			scanf("%d", &a);
			ver(a);
			break;
		case 4:
			printf("\n veuiller saisir la valeur du a --> ");
			scanf("%d", &A);
			printf("\n veuiller saisir la valeur du b --> ");
			scanf("%d", &B);
			printf("\n veuiller saisir la valeur du c --> ");
			scanf("%d", &C);
			moyenne(A,B,C);
			break;
		case 5:
			printf("\nveuiller saisir le nombre de photocopie -->");
			scanf("%d", &x);
			coutphotocopies(x);
			break;
		case 6:
			return(0);
		default:
			printf("NUMERO NON RECONNUE VEUILLER RECOMMENCER\n");
			main();
	}

return (0);
}



voici mon code,
j'ai signaler quelque part dans mon code(REGARDER A PARTIR D'ICI), pour vous montrer la partie importante;

le probleme qui est la est que quand j'execute, je passe pour la premiere fois je saisie le nombre de photocopie et ensuite quand je recommence, je resaisie encore et la au lieu de rappeler la fonction, le programme s'arrete carrement, donc il appele la fonction une seule fois et pourtant il est sense le faire indefiniment;

c'est un devoir de la fac, je dois le rendre demain.
votre aide me seras precieuse.

1 réponse

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 11 mai 2020 à 08:31
bonjour,
je suggère que tu corriges l'indentation dans ta fonction.
je suggère que tu ajoutes un printf tout à la fin de la fonction coutphotocopies.
0