A voir également:
- Problème en pascal(dev-pas) + question
- Massgrave dev - Accueil - Windows
- Telecharger dev c++ - Télécharger - Langages
- Turbo pascal download - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev-pascal - Télécharger - Édition & Programmation
14 réponses
je v te donner juste une idéé a résoudre ce probléme
on va commencer par saisir l'equation de la droite sous forme d'une chaine de caractére
le 3éme caractére ca sera la valeur du variable a
le dernier caractére ca sera la valeur du variable b .
ensuite on va utiliser la procédure val (ch,n,e) pour convertir la chaine en nombres.
on va commencer par saisir l'equation de la droite sous forme d'une chaine de caractére
le 3éme caractére ca sera la valeur du variable a
le dernier caractére ca sera la valeur du variable b .
ensuite on va utiliser la procédure val (ch,n,e) pour convertir la chaine en nombres.
oui maid il ya un inconvénient :
ceci vaut seulement si a et b sont constitués d'un seul chiffre par exemple si a=12 le a s'étendera sur 2 caractères
aussi tu peux me donner une réponse plus concrète en m'indiquant les déclarations de variables...
dans val(ch,n,e) que représentent le n et le e et le ch
*autre chose: comment faire pour compiler et/ou rédiger un programme en language assembleur?
ceci vaut seulement si a et b sont constitués d'un seul chiffre par exemple si a=12 le a s'étendera sur 2 caractères
aussi tu peux me donner une réponse plus concrète en m'indiquant les déclarations de variables...
dans val(ch,n,e) que représentent le n et le e et le ch
*autre chose: comment faire pour compiler et/ou rédiger un programme en language assembleur?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
Ne t’inquiète pas, voilà une solution à ton problème:
program exemple;
uses wincrt;
var a,b:real;
eq:string;
err,p1,p2:integer;
Begin
writeln(' Donnez l''équation de la droite qui sera de la forme y=ax+b');
readln(eq);
p1:=pos('=',eq); {déterminer la position de '=' dans l'équation}
p2:=pos('x',eq); { déterminer la position de x dans l'équation}
VAL(copy(eq,p1+1,p2-1-p1),A,err); {a commence de p1+1 est fini en p2-1}
if(err<>0)then
write('il y a une erreur dans l''équation à la position ',err)
else
begin
p1:= pos('+',eq);
VAL(copy(eq,p1+1,length(eq)-p1),B,err); {B de p1 jusqu'à length(eq)}
if(err=0)then
{vous avez A et B vous pouvez maintenant les manipuler}
{mais pour vérifier:}
Writeln('A= ',A:4:2,' et B= ',B:4:2)
else
Writeln('il y a une erreur dans l''équation à la position ',err);
end;
END.
Ne t’inquiète pas, voilà une solution à ton problème:
program exemple;
uses wincrt;
var a,b:real;
eq:string;
err,p1,p2:integer;
Begin
writeln(' Donnez l''équation de la droite qui sera de la forme y=ax+b');
readln(eq);
p1:=pos('=',eq); {déterminer la position de '=' dans l'équation}
p2:=pos('x',eq); { déterminer la position de x dans l'équation}
VAL(copy(eq,p1+1,p2-1-p1),A,err); {a commence de p1+1 est fini en p2-1}
if(err<>0)then
write('il y a une erreur dans l''équation à la position ',err)
else
begin
p1:= pos('+',eq);
VAL(copy(eq,p1+1,length(eq)-p1),B,err); {B de p1 jusqu'à length(eq)}
if(err=0)then
{vous avez A et B vous pouvez maintenant les manipuler}
{mais pour vérifier:}
Writeln('A= ',A:4:2,' et B= ',B:4:2)
else
Writeln('il y a une erreur dans l''équation à la position ',err);
end;
END.
c'est compris merci
Je me suis inspiré de ce que tu m'a dis et j'ai écris un petit programme qui lis a,b, et c en entrant un équation sous forme
ax²+bx+c=0 , j'ai compilé la source mais j'ai reçu une erreure ( je ne sais pas pourquoi ?) :
voici la source :
program Untitled;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
writeln('Entrez votre équation:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,0,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
VAL(copy(eq,p1+1,p2-1),b,err); {b de p1+1 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
VAL(copy(eq,p2+1,p3-1,c,err); {c de p2+1 jusqu'à p3-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
end.
vous pouvez m'aidez à savoir l'erreur et à la corriger ???
Je me suis inspiré de ce que tu m'a dis et j'ai écris un petit programme qui lis a,b, et c en entrant un équation sous forme
ax²+bx+c=0 , j'ai compilé la source mais j'ai reçu une erreure ( je ne sais pas pourquoi ?) :
voici la source :
program Untitled;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
writeln('Entrez votre équation:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,0,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
VAL(copy(eq,p1+1,p2-1),b,err); {b de p1+1 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
VAL(copy(eq,p2+1,p3-1,c,err); {c de p2+1 jusqu'à p3-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
readln;readln;
end
end.
vous pouvez m'aidez à savoir l'erreur et à la corriger ???
bonjour,
pour la syntaxe, il vous manque deux ; après les deux end avant VAL et une parenthèse dans --VAL(copy(eq,p2+1,p3-1,c,err); {c de p2+1 jusqu'à p3-1} --après p3-1.
mais il y a aussi des erreurs de sémentique:
A savoir: lorsque en écrit p:=pos('x+',eq) , et p prend par exemple 5, ca signifie que x est la position 5 e + est la position 6 et alors c commence de p+2 et non pas de p+1.
d'autre part n'oublier pas d'insérer la ligne --uses wincrt;-- à la deuxième ligne sinon le programme ne fonctionnera pas.
Essayes maintenant de corriger votre programme et informes moi de ce que ce passe.
pour la syntaxe, il vous manque deux ; après les deux end avant VAL et une parenthèse dans --VAL(copy(eq,p2+1,p3-1,c,err); {c de p2+1 jusqu'à p3-1} --après p3-1.
mais il y a aussi des erreurs de sémentique:
A savoir: lorsque en écrit p:=pos('x+',eq) , et p prend par exemple 5, ca signifie que x est la position 5 e + est la position 6 et alors c commence de p+2 et non pas de p+1.
d'autre part n'oublier pas d'insérer la ligne --uses wincrt;-- à la deuxième ligne sinon le programme ne fonctionnera pas.
Essayes maintenant de corriger votre programme et informes moi de ce que ce passe.
Attention: en Pascal, la première position dans une chaine est 1 et non pas 0:
copy(eq,1,.... à la place de copy(eq,0,........
copy(eq,1,.... à la place de copy(eq,0,........
si vous n'arrivez pas voilà une autre remarque très importante:
dans danc copy(ch,p,n): n représente le nombre de caractère qu'on va copier donc pour copier une sous chaîne qui commance de p1 et qui finit à p2: il faut écrire copy(eq,p1,p2-p1+1) puisque le nombre de caractère entre p1 et p2 est: p2-p1+1.
voilà, je pense comme ça le problème est résolu. mais, si tu veux je t'envoies le code corrigé?
bonne journée.
dans danc copy(ch,p,n): n représente le nombre de caractère qu'on va copier donc pour copier une sous chaîne qui commance de p1 et qui finit à p2: il faut écrire copy(eq,p1,p2-p1+1) puisque le nombre de caractère entre p1 et p2 est: p2-p1+1.
voilà, je pense comme ça le problème est résolu. mais, si tu veux je t'envoies le code corrigé?
bonne journée.
NON
le programme se compile et s'éxecute mais à chaque équation que je lui entre il m'affiche
Il y a une erreur sytaxique dans l''équation,retapez la:
par exemple : 3x²+2x+2=0 ---------------> Il y a une erreur sytaxique dans l''équation,retapez la:
j'ai corrigé les erreurs et voici la nouvelle source :
program Untitled;
uses wincrt;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
write('Entrez votre équation:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
readln;readln;
end;
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
readln;readln;
end;
VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
readln;readln;
end;
VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
writeln('a=',a,'b=',b,'c=',c);
readln;readln;
end.
* AUTRE CHOSE : Comment indiquer a l'ordinateur que si a est collé au b l'ordinateur lui affecte la valeur de 1 (c'est a dire le ce qui est entre a et b) ?
le programme se compile et s'éxecute mais à chaque équation que je lui entre il m'affiche
Il y a une erreur sytaxique dans l''équation,retapez la:
par exemple : 3x²+2x+2=0 ---------------> Il y a une erreur sytaxique dans l''équation,retapez la:
j'ai corrigé les erreurs et voici la nouvelle source :
program Untitled;
uses wincrt;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
write('Entrez votre équation:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
readln;readln;
end;
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
readln;readln;
end;
VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
read(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
readln;readln;
end;
VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
writeln('a=',a,'b=',b,'c=',c);
readln;readln;
end.
* AUTRE CHOSE : Comment indiquer a l'ordinateur que si a est collé au b l'ordinateur lui affecte la valeur de 1 (c'est a dire le ce qui est entre a et b) ?
si vous avez bien lis ma réponse j'ai vous dis que dns copy(eq,p,n), n représente le nombre de caractères à extraire et non pas la position de fin et puisque le nombre de caractères entre p1 et p2 est (p2-p1+1) donc ce n'est plus copy(eq,p1+2,p2-1) qui veut dire que b de p1+2 jusqu' p2-2 mais c'est copy(eq,p1+2,p2-1-(p1+2)+1).
vous pouvez maintenant essayé en attendant que je vous prépare le code complet.
vous pouvez maintenant essayé en attendant que je vous prépare le code complet.
voilà la solution, elle donne bien le résultat, lisez bien les commentères.
----------------
program Untitled;
uses wincrt;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
write('Entrez votre équation:');
readln(eq); {éviter tjs l'utilisation de read, utilises readln }
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
{--ici la valeur initiale de err est déjà 0 donc il ne va jamais entrer à la boucle --}
(* il faut donc faire monter la ligne de calcul de a*)
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
end;
{-- cette ligne est déplacer vers le haut--
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
(**** même chose pour toutes les boucles ****)
VAL(copy(eq,p1+2,p2-1-(p1+2)+1),b,err); {b de p1+2 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p1+2,p2-1-(p1+2)+1),b,err); {b de p1+2 jusqu'à p2 - 2 }
end;
{--même chose ---VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
VAL(copy(eq,p2+2,p3-1-(p2+2)+1),c,err); {c de p2+2 jusqu'à p3-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p2+2,p3-1-(p2+2)+1),c,err); {c de p2+2 jusqu'à p3-1}
end;
{-- de même ---VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
writeln('a=',a:4:2,' b=',b:4:2,' c=',c:4:2);
readln;readln;
end.
--------------
reste à résoudre maintenant avec delta, il y a plein de conditions à faire. bonne chance.
----------------
program Untitled;
uses wincrt;
var a,b,c,delta,xun,xdeux:real;
eq:string;
err,p1,p2,p3:integer;
Begin
Writeln('***Résoudre les équations du second degré***');
writeln('L''équation sera de la forme ax²+bx+c=0.');
write('Entrez votre équation:');
readln(eq); {éviter tjs l'utilisation de read, utilises readln }
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
{--ici la valeur initiale de err est déjà 0 donc il ne va jamais entrer à la boucle --}
(* il faut donc faire monter la ligne de calcul de a*)
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
end;
{-- cette ligne est déplacer vers le haut--
VAL(copy(eq,1,p1-1),a,err); {a commence de 0 et finit en p1-1}
(**** même chose pour toutes les boucles ****)
VAL(copy(eq,p1+2,p2-1-(p1+2)+1),b,err); {b de p1+2 jusqu'à p2 - 2 }
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p1+2,p2-1-(p1+2)+1),b,err); {b de p1+2 jusqu'à p2 - 2 }
end;
{--même chose ---VAL(copy(eq,p1+2,p2-1),b,err); {b de p1+2 jusqu'à p2 - 2 }
VAL(copy(eq,p2+2,p3-1-(p2+2)+1),c,err); {c de p2+2 jusqu'à p3-1}
while err<>0 do
begin
write('Il y a une erreur sytaxique dans l''équation,retapez la:');
readln(eq);
p1:=pos('x²',eq); { déterminer la position de x² dans l'équation}
p2:=pos('x+',eq); { déterminer la position de x+ dans l'équation}
p3:=pos('=',eq); { déterminer la position de = dans l'équation}
VAL(copy(eq,p2+2,p3-1-(p2+2)+1),c,err); {c de p2+2 jusqu'à p3-1}
end;
{-- de même ---VAL(copy(eq,p2+2,p3-1),c,err); {c de p2+2 jusqu'à p3-1}
writeln('a=',a:4:2,' b=',b:4:2,' c=',c:4:2);
readln;readln;
end.
--------------
reste à résoudre maintenant avec delta, il y a plein de conditions à faire. bonne chance.