[Lang. C] Calcul de polynôme

Résolu
MonsieurP Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
MonsieurP Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerai calculer X et Y de tous les polynômes de degré 10 ou inférieur. Les coefficients, les limites, et le pas de calcul est entré par l'utilisateur.

Je viens de passer 2h sur mon code, et ça ne fonctionne toujours pas. Je dois passer à côté de quelque chose d'évident, mais je ne vois pas quoi. J'ai tenté de résoudre le problème de 2 façons différente. Vos lumières me seraient fort utiles.

Voici ce que j'ai fait pour le moment :

Version 1 :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main ()
{
	int i, j;
	float pas, Lmax, Lmin, Y, poly[11], tot;

	printf("Entrez la limite de calcul suppérieur : ");
	scanf("%f",&Lmax);

	printf("\n\nEntrez la limite de calcul inférieur : ");
	scanf("%f",&Lmin);

	printf("\n\nEntrez le pas de clacul : ");
	scanf("%f",&Lmax);

	for (i = 0; i < 11; i++)
	{
		printf("\n\nEntrez le coeficient de degré %d : ", i);
		scanf("%f",&poly[i]);
	}

	for (j = Lmin; j < Lmax + 1; j = j + pas)
	{
	    tot = 0;
	    for (i = 0; i < 11; i++)
	    {
            Y = poly [i] * (pow (j, i));
            tot = tot + Y;
	    }
	    printf ("\nSi X = %d, alors Y = %.2f", j, tot);
	    getchar();
	};
    printf("\n\n");
    system("PAUSE");
    system("CLS");
}


Version 2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main ()
{
    int i;
    float pas, Lmax, Lmin, Y, poly[11];

	printf("Entrez la limite de calcul suppérieur : ");
	scanf("%f",&Lmax);

	printf("\n\nEntrez la limite de calcul inférieur : ");
	scanf("%f",&Lmin);

	printf("\n\nEntrez le pas de clacul : ");
	scanf("%f",&Lmax);

	for (i = 0; i < 11; i++)
	{
		printf("\n\nEntrez le coeficient de degré %f : ", i);
		scanf("%f",&poly[i]);
	}

	for (i = Lmin; i <= Lmax; i = i + pas)
	{
		Y = (i*(i*(i*(i*(i*(i*(i*(i*(i*(+poly[10])+poly[9])+poly[8])+poly[7])+poly[6])+poly[5])+poly[4])+poly[3])+poly[2])+poly[1])+poly[0];
		printf ("Si X vaut %f, alors Y(x) vaut %.2f\nEnter pour continuer\n\n", i, Y);
        getchar();
	};

    printf("\n\n");
    system("PAUSE");
    system("CLS");
}



Grand merci d'avance à celui qui prendra la peine de répondre.
A voir également:

3 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
tu mélanges entier et réels, ce n'est pas bon. Dans ta version 1, il faut que j soit réel, dans ta fonction 2 i doit être réel.
0
MonsieurP Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Char Sniper, en effet, j'avais fait quelques erreurs à ce niveau là. J'ai corrigé, mais ça ne fonctionne toujours pas. D'autres pistes ?
v1 :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main ()
{
	int i;
	float pas, Lmax, Lmin, Y, poly[11], tot, j;

	printf("Entrez la limite de calcul suppérieur : ");
	scanf("%f",&Lmax);

	printf("\n\nEntrez la limite de calcul inférieur : ");
	scanf("%f",&Lmin);

	printf("\n\nEntrez le pas de clacul : ");
	scanf("%f",&Lmax);

	for (i = 0; i < 11; i++)
	{
		printf("\n\nEntrez le coeficient de degré %d : ", i);
		scanf("%f",&poly[i]);
	}

	for (j = Lmin; j < Lmax + 1; j = j + pas)
	{
	    tot = 0;
	    for (i = 0; i < 11; i++)
	    {
            Y = poly [i] * (pow (j, i));
            tot = tot + Y;
	    }
	    printf ("\nSi X = %.2f, alors Y = %.2f", j, tot);
	    getchar();
	};
    printf("\n\n");
    system("PAUSE");
}


v2
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main ()
{
    int i;
    float pas, Lmax, Lmin, Y, poly[11];

	printf("Entrez la limite de calcul suppérieur : ");
	scanf("%f",&Lmax);

	printf("\n\nEntrez la limite de calcul inférieur : ");
	scanf("%f",&Lmin);

	printf("\n\nEntrez le pas de clacul : ");
	scanf("%f",&Lmax);

	for (i = 0; i < 11; i++)
	{
		printf("\n\nEntrez le coeficient de degré %d : ", i);
		scanf("%f",&poly[i]);
	}

	for (i = Lmin; i <= Lmax; i = i + pas)
	{
		Y = (i*(i*(i*(i*(i*(i*(i*(i*(i*(+poly[10])+poly[9])+poly[8])+poly[7])+poly[6])+poly[5])+poly[4])+poly[3])+poly[2])+poly[1])+poly[0];
		printf ("Si X vaut %d, alors Y(x) vaut %.2f\nEnter pour continuer\n\n", i, Y);
        getchar();
	};

    printf("\n\n");
    system("PAUSE");
}
0
MonsieurP Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai trouvé la réponse à mon problème. Bête faute de distraction. Lors du scanf du pas, je l'enregistrai dans la variable Lmax et non la variable pas...
0