Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
840 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Language C Polynome

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Language C Polynome

n°2221170
tama80
Posté le 01-03-2014 à 16:28:42  profilanswer
 

Bonjours !  
Voilà j'ai un ds de programmation en C et je vous avouerais que je suis totalement perdu dans cette matière, j'ai une prof qui nous as très mal enseigné ce langage (qui m'intéressais beaucoup avant son cours..).
Je regardais donc le ds de l'an dernier et je remarque que je ne sais rien faire, j'aimerais avoir la correction de cet exercice pour que je vois à peu prés comment sa marche et de ce fait je pourrais faire les autres ds. Vous êtes mon dernier espoir merci d'avance.  
 
 
Polynôme: Nous souhaitons travailler sur des polynômes de taille et de degré variables. Un polynôme sera  
représenté comme un tableau de termes, chaque terme comportant un coefficient et un degré.  
 
1) Déterminer la structure de donnée permettant de représenter le terme d’un polynôme en C.  
2) Comment va être représenté le polynôme ?  
3) Sachant qu’on ne sait pas combien de termes comporte le polynôme au moment où l’on  
écrit le programme, comment va-t-on déclarer le polynôme ? Que va-t-on être obligé de  
faire dans le main pour pouvoir l’utiliser ensuite ?  
4) Programmer les fonctions en langage C permettant :  
• De saisir le tableau des termes au clavier  
• D’afficher le polynôme  
• De rechercher un terme de degré donné dans un polynôme (affiche son coefficient ou 0)  
5) Ecrire une fonction C permettant de créer un polynôme à partir de la somme de deux  
polynômes.  
6) Ecrire en C un programme principal permettant de tester le tout.

mood
Publicité
Posté le 01-03-2014 à 16:28:42  profilanswer
 

n°2221174
blazkowicz
Posté le 01-03-2014 à 17:45:57  profilanswer
 

Eh bien c'est un problème de structure de donnée principalement, ensuite 3) laisse entendre qu'on veut pouvoir utiliser des polynômes de taille arbitraire et qu'on va faire des allocations mémoire (malloc ou similaire)

 

D'abord l'énoncé ne principe pas de quelle nature sont les coefficients : réels, entiers relatifs.. Bon, disons que c'est des réels, représentés par des float ou des double, ensuite le degré est un int..
Je te laisse imaginer la réponse à la question 1) !

 

Ensuite, tu as plus ou moins le choix. Tu peux faire avec une liste chaînée par exemple, ça m'a l'air facile. Bonus point : représenter le polynôme nul par une liste vide? (ça m'a l'air nécessaire vu que le degré du polynôle nul est mons l'infini..)

 

Enfin, pas tellement le choix si l'on veut faire avec un tableau il faudrait faire un "dynamic array", tableau redimensionnable en français je suppose (c'est un peu nul d'apprendre le C avec tous les termes comme ça en français :o)
J'ai trouvé des infos là-dessus : http://stackoverflow.com/questions [...] wing-array
(attention c'est pas à reprendre tel quel, à adapter, et "I've omitted safety checks for brevity" signifie qu'il n'a pas écrit les trucs pour les malloc qui ont échoué)

 

Mais bon, oublie peut-être ce dynamic array.
Si t'es coincé, commence par faire tout le programme avec comme structure de données un vulgaire tableau à taille fixe (par ex. 1000 éléments). Les éléments du tableau étant des "termes". Il faudra initialiser ce tableau avec des zéros partout.

 

Ensuite, une seconde version avec liste chaînée.

 

Bonus point : ne stocker que les termes à coefficient non nul.


Message édité par blazkowicz le 01-03-2014 à 17:51:11
n°2221186
tama80
Posté le 01-03-2014 à 19:43:01  profilanswer
 

waw... je pense que la prog n'est pas fais pour moi ^^

n°2221196
honrisse
Posté le 01-03-2014 à 21:38:05  profilanswer
 

tama80 a écrit :

Bonjours !  
Voilà j'ai un ds de programmation en C et je vous avouerais que je suis totalement perdu dans cette matière, j'ai une prof qui nous as très mal enseigné ce langage (qui m'intéressais beaucoup avant son cours..).
Je regardais donc le ds de l'an dernier et je remarque que je ne sais rien faire, j'aimerais avoir la correction de cet exercice pour que je vois à peu prés comment sa marche et de ce fait je pourrais faire les autres ds. Vous êtes mon dernier espoir merci d'avance.  
 
 
Polynôme: Nous souhaitons travailler sur des polynômes de taille et de degré variables. Un polynôme sera  
représenté comme un tableau de termes, chaque terme comportant un coefficient et un degré.  
 
1) Déterminer la structure de donnée permettant de représenter le terme d’un polynôme en C.  
2) Comment va être représenté le polynôme ?  
3) Sachant qu’on ne sait pas combien de termes comporte le polynôme au moment où l’on  
écrit le programme, comment va-t-on déclarer le polynôme ? Que va-t-on être obligé de  
faire dans le main pour pouvoir l’utiliser ensuite ?  
4) Programmer les fonctions en langage C permettant :  
• De saisir le tableau des termes au clavier  
• D’afficher le polynôme  
• De rechercher un terme de degré donné dans un polynôme (affiche son coefficient ou 0)  
5) Ecrire une fonction C permettant de créer un polynôme à partir de la somme de deux  
polynômes.  
6) Ecrire en C un programme principal permettant de tester le tout.


 

tama80 a écrit :

waw... je pense que la prog n'est pas fais pour moi ^^


 
A mon avis, la première chose à faire avant d'attaquer les annales c'est de bien relire les cours et de refaire les TD et les TP. C'est mieux que d'essayer de comprendre à partir des annales.
Si les cours sont si mauvais que ça, il y a plein de tuto sur le net qui reprend les bases de la programmation : http://fr.openclassrooms.com/infor [...] ammer-en-c ou http://franckh.developpez.com/arti [...] uter-en-c/
 
Enfin, un exemple de code (qui n'est pas la solution de l'annale) pour montrer que c'est faisable et compréhensible lorsque l'on a les bases.

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.     int degree = 0;
  6.     printf("Quel est le degree du polynome ? " );
  7.     scanf("%d", &degree);
  8.     printf("Le degree du polynome est %d\n", degree);
  9.     int* tabCoeff = malloc((degree + 1) * sizeof(int));
  10.     int degree_courant;
  11.     for(degree_courant = 0; degree_courant <= degree; degree_courant = degree_courant+1) {
  12.         int coeff = 0;
  13.         printf("Entrez le coefficient pour le degree %d : ", degree_courant);
  14.         scanf("%d", &coeff);
  15.         tabCoeff[degree_courant] = coeff;
  16.     }
  17.     int cpt;
  18.     printf("Le polynome est : " );
  19.     for(cpt = 0; cpt < degree + 1; cpt = cpt+1) {
  20.         if(cpt < degree) {
  21.             printf("%dX^%d + ", tabCoeff[cpt], cpt);
  22.         } else {
  23.             printf("%dX^%d\n", tabCoeff[cpt], cpt);
  24.         }
  25.     }
  26.     printf("Fin du programme.\n" );
  27.     return 0;
  28. }

n°2221204
tama80
Posté le 01-03-2014 à 23:31:50  profilanswer
 

Je te remercie le cours est bien structuré je me lance sur les pointeurs la !

n°2221212
blazkowicz
Posté le 02-03-2014 à 08:21:36  profilanswer
 

   int degree_courant;
    for(degree_courant = 0; degree_courant <= degree; degree_courant = degree_courant+1) {
        int coeff = 0;
        printf("Entrez le coefficient pour le degree %d : ", degree_courant);
        scanf("%d", &coeff);
        tabCoeff[degree_courant] = coeff;
    }

 

Déclarez un int dans la boucle, ce serait pas du C++ ça?
Tu peux toujours déclarer un int coeff=0; au début du main.

 

Je me suis trop emporté avec ces histoires de liste chaînées ou de tableau redimensionnable, en effet la façon ci-dessus de demander le degré du polynôme qu'on veut entrer et de faire un malloc pour créer le tableau c'est très bien.

Message cité 1 fois
Message édité par blazkowicz le 02-03-2014 à 08:24:24
n°2221229
gilou
Modérateur
Modzilla
Posté le 02-03-2014 à 15:52:56  profilanswer
 

blazkowicz a écrit :

   int degree_courant;
    for(degree_courant = 0; degree_courant <= degree; degree_courant = degree_courant+1) {
        int coeff = 0;
        printf("Entrez le coefficient pour le degree %d : ", degree_courant);
        scanf("%d", &coeff);
        tabCoeff[degree_courant] = coeff;
    }
 
Déclarez un int dans la boucle, ce serait pas du C++ ça?
Tu peux toujours déclarer un int coeff=0; au début du main.

Le C a des variables locales a un bloc depuis ses débuts.
Par contre depuis C99 on peut même écrire:
for(int degree_courant = 0; degree_courant <= degree; degree_courant = degree_courant+1) {...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Language C Polynome

 

Sujets relatifs
[C++] manipulation de tableau a l'aide des references ?Visual C++ 2010 Express et SDL
C# Problème de clé absente du dictionnaire[HELP] Visual C++
[C++] utiliser des classes dans mon codeComment transformer un projet C++ .exe en .DLL pour exporter des fonct
Les variables bases en C++Installation de boost sous visual C++ 2010
Calculer le factorielle d'un nombre. // (Dev-C++)[C]Problème affichage Calendrier en C (débutant)
Plus de sujets relatifs à : Language C Polynome


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR