Inscription / Connexion Nouveau Sujet
Niveau calculatrices
Partager :

[Turbo Pascal] Addition polynômes

Posté par
infophile
04-05-08 à 14:09

Bonjour

La compilation du code ne génère aucune erreur, mais lorsque je veux lancer le programme la fenêtre DOS disparaît instantanément. Grâce à une capture d'écran j'arrive lire "Runtime error 216" et sur developpez.com ils disent :

Citation :
Sur un système tournant en mode protégé, vous tentez probablement d'accéder à une adresse mémoire située en dehors de l'espace alloué par le système à votre programme. Vous faites vraisemblablement alors référence à un pointeur dont la valeur est indéfinie (ou Nil).
Une autre cause peut être que vous essayez d'écrire dans un segment de code.


Donc c'est une erreur qui a du se glisser dans le code mais je ne la vois, vous pouvez y jeter un oeil ?

Citation :
Function addition(U : poly ; V : poly) : poly;
Var a,b,c,sommet : poly; {Le type poly caractérise le polynôme}

Begin
     b:=U;
     c:=V;
     sommet:=NIL;
     while (b<>NIL) or (c<>NIL) do {On additionne les coefficients jusqu'à épuiser une liste}
           begin
           new(a);
           a^.coeff:=b^.coeff+c^.coeff;
           a^.suivant:=sommet;
           sommet:=a;
           b:=b^.suivant;
           c:=c^.suivant;
           end;
      if (b=NIL) and (c<>NIL) then {Et on ajoute les termes restants de la liste non vide}
         begin
         while c<>NIL do
               begin
               new(a);
               a^.coeff:=c^.coeff;
               a^.suivant:=sommet;
               sommet:=a;
               c:=c^.suivant;
               end;
         end
               else if (c=NIL) and (b<>NIL) then
                    begin
                    while b<>NIL do
                          begin
                          new(a);
                          a^.coeff:=b^.coeff;
                          a^.suivant:=sommet;
                          sommet:=a;
                          b:=b^.suivant;
                          end;
                    end;
      addition:=miroir(sommet); {miroir retourne le polynôme avec les coefficients dans le bon ordre}
End;


Merci

Posté par
infophile
re : [Turbo Pascal] Addition polynômes 04-05-08 à 20:41

Petit up pour la soirée

Posté par
infophile
re : [Turbo Pascal] Addition polynômes 05-05-08 à 06:53

Up pour les matinaux

Posté par
enzo
re : [Turbo Pascal] Addition polynômes 05-05-08 à 10:36

Salut infophile

1. Que donne b.coeff ou c.coeff, lorsque les polynômes sont de degré différents (expression de ta première boucle) ? En fait je me demande si le fait d'aller chercher dans un endroit où ça n'existe pas n'est pas gênant...

Si par exemple, b est de degré supérieur à c, tu rentres encore dans ta boucle "while (b<>NIL) or (c<>NIL)"et au moment du c=c.suivant (voir peut être même du c.coeff), il y a un ennui...

2. Tu ne peux pas débugger en pas à pas ? C'est largement plus pratique...

Courage

Posté par
isisstruiss
re : [Turbo Pascal] Addition polynômes 05-05-08 à 12:27

Bonjour infophile.

Quand tu demandes de l'aide en programmation, essayes un peu d'expliquer le but de ta fonction, ta manière de procéder et les définitions précédentes. J'ai fait un petit jeu de devinette et déduction logique pour comprendre ton idée. En particulier tu aurais pu donner la définition de poly...

Petite question:
(b<>NIL) ou (c<>NIL) est vrai si (b<>NIL) est vrai ou si (c<>NIL) est vrai.
Donc quand tu écris

Citation :
while (b<>NIL) or (c<>NIL) do

cela veut dire qu'il suffit qu'un des deux pointeurs ne soit pas nul pour continuer la boucle?
Et tu essaies d'accéder ensuite à nil.coeff...

Isis

Posté par
infophile
re : [Turbo Pascal] Addition polynômes 05-05-08 à 17:20

Bonjour à tous les deux et merci de vous être penché sur mon problème

C'était tout bête vous avez raison, il fallait mettre un "and" et non un "or" dans la première boucle

Je suis maintenant en train d'essayer d'effectuer la division euclidienne de deux polynômes, ce n'est pas aussi simple

J'ai déjà créer la fonctions permettant de calculer le produit par contre.

Encore merci

Posté par
isisstruiss
re : [Turbo Pascal] Addition polynômes 05-05-08 à 22:00

Tu fais ça juste pour t'amuser et apprendre à utiliser les pointeurs?

Isis

Posté par
infophile
re : [Turbo Pascal] Addition polynômes 06-05-08 à 06:38

Bonjour Isis

Non c'est pour un DM, mais le travailler m'a permis de comprendre les pointeurs

Merci, bonne journée



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !