[Lang. C] Calcul de polynôme

Résolu
MonsieurP Messages postés 3 Statut Membre -  
MonsieurP Messages postés 3 Statut Membre -
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 10112 Statut Contributeur 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 Statut Membre
 
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 Statut Membre
 
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