Calcul de x a la puissance y

0/5 (13 avis)

Snippet vu 12 464 fois - Téléchargée 30 fois

Contenu du snippet

Programme qui calcule un nombre x a une puissance y positive.

Source / Exemple :


/*	Calcule x a la puissance y dans tous les cas*/

#include<stdio.h>
int main()
{
	int retour	=	0;
	float	x	=	0;	
	int	y	=	0;	
	float puissance = 1; 
	int i;
	int z	=	0;

	do
	{
		printf("\nVeuillez entrer votre nombre entier: ");
		retour=scanf("%f",&x);
		fflush(stdin);

		if(retour < 1)
		{
			printf("\nVous avez entre une mauvaise donnnee\n");
		}
	}
	while(retour < 1);
	
	do
	{
		printf("\nVeuillez entrer votre puissance: ");
		retour=scanf("%d",&y);
		fflush(stdin);

		if(retour < 1)
		{
			printf("\nVous avez entre une mauvaise donnee\n");
		}
	}
	while(retour < 1);

	if(x != 0 && y == 0)
	{
		printf("\nLa puissance du nombre entre est 1\n");
	}

	else
	{
		if(x == 0 && y > 0)
		{
			printf("\nLa puissance du nombre entre est 0\n\n");
		}
		
		
			else
			{
				if((x == 0 && y == 0) || (x == 0 && y < 0))
				{
					printf("\nLa puissance du nombre entre est indetermine\n\n");
				}
			}
	}

	if(x > 0 && y > 0)
	{
		for(i = 0 ; i < y; i++)
		{
			puissance = puissance * x;
			
		}
		printf("\n%2.2f a la puissance % d  donne  %3.4f\n\n",x,y,puissance);

	}

	else
	{
		if(x > 0 && y < 0)
		{
			z = y * -1;

			for(i = 0 ; i < z ; i++)
			{
				puissance = puissance / x;
			}
			
			printf("\n%2.2f a la puissance %d donne %3.10f\n\n",x,y,puissance);
		}

			else
			{
				if(x < 0 && y <0)
				{
					for(i = 0 ; i < -y ; i++)
					{
						puissance = puissance / x;
					}
					printf("\n%2.2f a la puissance %d donne %3.10f\n\n",x,y,puissance);
				}
			}
	}

	if(x < 0 && y > 0)
	{
		for(i = 0 ; i < y; i++)
		{
			puissance = puissance * x;
		}
		printf("\n%2.2f a la puissance % d  donne  %3.4f\n\n",x,y,puissance);
	}

		
	
	return 0;
	
}

Conclusion :


signalez les erreurs

A voir également

Ajouter un commentaire Commentaires
Bybydjou Messages postés 8 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 10 février 2005
28 nov. 2003 à 23:12
erf, oula, g trop bu moi ce soir, dsl, je raconte n importe koi :)
il semble bien que g oublie une condition a mon if, mais je ne sais plus trop la
Bybydjou Messages postés 8 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 10 février 2005
28 nov. 2003 à 23:08
effectivement, le truc du negatif, c seulement quand la puissance n est pas entiere, merci de me l avoir fait remarquer, je l avais oublié :)
de plus, refaire les fonctions, tu les as refaites, ca serai juste du copier coller, avec un peu de if else par ci par la
garslouche Messages postés 584 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
28 nov. 2003 à 22:34
1) Pour les puissances non-entières gvhecke voulait parler de vraiment le reprogrammer (y compris les fonctions exp et log). D'ailleurs comme je l'ai dit qq msg au dessus tu peux le voir dans ma dernière source.
2) Ton algo est faux pour les x<0. Par exemple tu fais puissance(-2,4) ça retourne - (puissance(2,4)) !!! Donc 16 = -16 !!!

Et la programmation des fonctions comme exp et log et mathématiquement d'un tout autre niveau!
Bybydjou Messages postés 8 Date d'inscription mercredi 16 octobre 2002 Statut Membre Dernière intervention 10 février 2005
28 nov. 2003 à 21:18
bon, mon comentaire est pas en rapport au code, mais a l algo de la puissance non entiere.
il doit faire partie des plus petit du monde :
fonction reel puissance ( reel x, reel y )
si x > 0
alors
retourne exponentiel(y*log(x))
sinon
retourne -(puissance(-x, y)
fin

personnellement, je trouve pas ca bcp plus passionnant que les puissances sur entier
gvhecke Messages postés 65 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 21 mai 2008
26 nov. 2003 à 23:41
J'ai été voir ca .... j'ai qu'une chose à dire: Bravo !

Je crois que celà permettra à un grand nombre de personnes d'avoir un appercu de ce que cachait <math.h> sous son capot.
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.