Sous programme en langage C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Sous programme en langage C



  1. #1
    invite817c9d71

    Wink Sous programme en langage C


    ------

    Bonjour;
    Voici l'énoncé de l'exercice:

    Au cours de ces questions on représentera les polynômes a coefficients réels à l'aide de tableaux de doubles.
    Ainsi P=aiX^(i) sera représenté par un tableau t tel que t[i] = ai pour tout i entre 0 et n.

    1/Ecrire un sous-programme litPolynome qui demande à l'utilisateur de taper les coefficients d'un polynôme et qui retourne sa représentation sous forme d'un tableau.

    Pour vérifier la validité du sous programme j'ai fait le code suivant:

    Code:
    #include<stdio.h>
    #include<conio.h>
    
    void          litpolynome(double t[],int* nb_coeff);
    
    const int Nmax=100;
    main()
    {
          double P[Nmax];
          int taille,i;
          
          litpolynome(P,&taille);
          printf("La taille du tableau est : %d",taille);
          
          for(i=0;i<taille;i++)
          {
                                        printf("\nP[%d]=%f",i,P[i]);
                                        
          }
          
    
    
    getch();
    }
    
    void         litpolynome(double t[],int* nb_coeff)
    
    {
                 int i;
                 
                 printf("Saisir la taille de votre tableau : ");
                 scanf("%d",&*nb_coeff);
                 
                 for(i=0;i<*nb_coeff;i++)
                 {
                                        printf("\nt[%d]=",i);
                                        scanf("%d",&t[i]);
                 }
                 
    }
    Seulement, ce programme révèle que le changement ne se fait qu'au niveau des variables locales: le tableau t, alors que le tableau P n'est pas remplie. Comment pourrais-je remplir le tableau P par les coefficients sachant que l'utilisation des pointeurs pour le tableau t retourne un message d'erreur...

    Merci de votre aide, c'est urgent!

    -----
    Dernière modification par JPL ; 05/06/2010 à 13h45. Motif: Ajout de la balise Code pour la lisibilité

  2. #2
    Jack
    Modérateur

    Re : Sous programme en langage C

    1/ utilise les balises code !!! C'est quand même plus lisible comme ça;
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    void litpolynome(double t[],int* nb_coeff);
    
    const int Nmax=100;
    int main(){
    	double P[Nmax];
    	int taille,i;
    
    	litpolynome(P,&taille);
    	printf("La taille du tableau est : %d",taille);
    
    	for(i=0;i<taille;i++) {
    		printf("\nP[%d]=%lf",i,P[i]);
    	}
    	getch();
    	return 0;
    }
    
    void litpolynome(double t[],int* nb_coeff){
    	int i;
    
    	printf("Saisir la taille de votre tableau : ");
    	scanf("%d",&*nb_coeff);
    
    	for(i=0;i<*nb_coeff;i++) {
    		printf("\nt[%d]=",i);
    		scanf("%lf",&t[i]);
    	}
    }
    2/
    ce programme révèle que le changement ne se fait qu'au niveau des variables locales: le tableau t, alors que le tableau P n'est pas remplie.
    Qu'est-ce qui te fait dire ça? Tu as vérifié que les données étaient correctement saisies dans le tableau t?

    Ton problème est que tu utilises des doubles et que tu utilises des chaines de formatage inadaptées:
    Code:
    printf("\nP[%d]=%f",i,P[i]);
    ...
    scanf("%d",&t[i]);
    Pour un double, la chaine est "lf".
    Les corrections sont faites dans le source ci-dessus

    A+

  3. #3
    polo974

    Re : Sous programme en langage C

    Tout est dans le %...

    argh ... grillé par Jack qui donne la solution.

    par contre le
    Code:
    scanf("%d",&*nb_coeff);
    est un peu lourd (&* s'annule)

    Code:
    scanf("%d",nb_coeff);
    suffit vu que nb_coeff est déjà le pointeur

    maintenant, il ne serait pas inutile d'ajouter des tests sur la taille nb_coeff (0>=nb_coeff>=100) pour éviter certains massacres.
    Jusqu'ici tout va bien...

  4. #4
    invite817c9d71

    Re : Sous programme en langage C

    Bonjour;

    Merci de ta réponse Jack, ça marche à merveille maintenant.
    J'ignorais la différence entre le float et le double à ca niveau-là.
    Oué faut ajouter un contrôle de Saisie.
    Merci, @+

  5. A voir en vidéo sur Futura
  6. #5
    invite2c6a0bae

    Re : Sous programme en langage C

    Citation Envoyé par polo974 Voir le message
    maintenant, il ne serait pas inutile d'ajouter des tests sur la taille nb_coeff (0>=nb_coeff>=100) pour éviter certains massacres.
    Ou mieux, une allocation dynamique plutôt qu'une variable globale...

  7. #6
    invite2d7144a7

    Re : Sous programme en langage C

    Bonjour,
    Citation Envoyé par .:Spip:. Voir le message
    Ou mieux, une allocation dynamique plutôt qu'une variable globale...
    Il n'y a pas de variable globale, le tableau est défini localement à main.

    (Par définition, les variables globales sont définies hors de toute fonction).

  8. #7
    invite2c6a0bae

    Re : Sous programme en langage C

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Il n'y a pas de variable globale, le tableau est défini localement à main.

    (Par définition, les variables globales sont définies hors de toute fonction).
    Code:
    const int Nmax=100;
    C'est bien une variable (certes constante) globale, et c'est moche.

    PS : je sais ce qu'est une variable globale

  9. #8
    invite2d7144a7

    Re : Sous programme en langage C

    Bonjour,

    Pris comme ça, ok.

  10. #9
    polo974

    Re : Sous programme en langage C

    gros bug:
    le sujet demande litPolynome() et tu écris litpolynome()

    je sais, c'est assez futile, mais prendre la convention de passer en majuscule la première lettre de chaque mot collé dans un nom de variable rend la lecture moins fastidieuse ex:

    fonctionquifaittoutetnimporteq uoi() totalement illisible ...

    fonctionQuiFaitToutEtNImporteQ uoi() nettement plus clair (ah bon, ah oui, un peu quand même...)
    Jusqu'ici tout va bien...

Discussions similaires

  1. programme informatique pour résoudre f(x)=0 (langage pascal)
    Par inviteb71d221c dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 21/05/2009, 15h43
  2. programme langage C
    Par invite3ca1c29c dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 23/11/2008, 12h19
  3. programme de correlation en langage assembleur
    Par invite54d71191 dans le forum Électronique
    Réponses: 9
    Dernier message: 12/05/2008, 21h17
  4. programme I2C en langage C
    Par invite7670cc44 dans le forum Électronique
    Réponses: 0
    Dernier message: 07/04/2008, 19h47
  5. programme qui tourne sous win98 et plante sous win xp
    Par serrepate dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 27/06/2007, 08h50
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...