Exercice de programmation pascal
feezbury
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
ahmed.becha.gmail -
ahmed.becha.gmail -
Bonjour,
je demande votre aide dans un programme en pascal qui me perturbe :s il s'agit de lire tous les nombres de 1 à 1000 , de faire leur division binaire nombre par nombre , de chercher son équivalent en binaire et de vérifier si ce nombre binaire est rond ou non (rond veut dire s'il contient autant de 0 que de 1)
voici mon travail , sur la deuxième fonction ya qq chose qui cloche , je c pa exactement ou est le probleme
Merci de votre aide !!
program affich_rond;
uses wincrt;
var
x : integer;
chr : string;
function conversion (d:integer):string;
var
e , q : integer;
ch1,ch : string;
begin
ch := '';
repeat
q := d div 2;
e := d mod 2;
str(e,ch1);
ch:= ch1 + ch;
d := q
until d=0;
conversion:=ch;
end;
function rond (ch : string):boolean;
var
i , n1 , n0 : integer;
V : boolean;
begin
for i := 1 to length(ch) do
begin
if ch[i] = '1' then
begin
n1 := n1 + 1;
end
else
begin
n0 := n0 + 1;
end;
end;
if n1 = n0 then
begin
V := true;
end
else
begin
V := false;
end;
rond := V;
end;
begin
for x := 1 to 1000 do
begin
chr := conversion(x);
writeln(chr);
if rond(chr) = true then
begin
writeln(x);
end;
end;
end.
je demande votre aide dans un programme en pascal qui me perturbe :s il s'agit de lire tous les nombres de 1 à 1000 , de faire leur division binaire nombre par nombre , de chercher son équivalent en binaire et de vérifier si ce nombre binaire est rond ou non (rond veut dire s'il contient autant de 0 que de 1)
voici mon travail , sur la deuxième fonction ya qq chose qui cloche , je c pa exactement ou est le probleme
Merci de votre aide !!
program affich_rond;
uses wincrt;
var
x : integer;
chr : string;
function conversion (d:integer):string;
var
e , q : integer;
ch1,ch : string;
begin
ch := '';
repeat
q := d div 2;
e := d mod 2;
str(e,ch1);
ch:= ch1 + ch;
d := q
until d=0;
conversion:=ch;
end;
function rond (ch : string):boolean;
var
i , n1 , n0 : integer;
V : boolean;
begin
for i := 1 to length(ch) do
begin
if ch[i] = '1' then
begin
n1 := n1 + 1;
end
else
begin
n0 := n0 + 1;
end;
end;
if n1 = n0 then
begin
V := true;
end
else
begin
V := false;
end;
rond := V;
end;
begin
for x := 1 to 1000 do
begin
chr := conversion(x);
writeln(chr);
if rond(chr) = true then
begin
writeln(x);
end;
end;
end.
A voir également:
- Exercice de programmation pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Application de programmation - Guide
- Fermer un programme de force - Guide
1 réponse
bonjour, je crois que l'erreur provient de l'edition de la variable ch au niveau de la 2ieme fonction,tu devrais changer
cette notification en autre chose comme ch2 peut etre.car la variable ch est deja utilise dans le programme principal.
bonne continuation,,pour d'autres PBS envoie les moi a cette adresse takuma1483@yahoo.fr,
cette notification en autre chose comme ch2 peut etre.car la variable ch est deja utilise dans le programme principal.
bonne continuation,,pour d'autres PBS envoie les moi a cette adresse takuma1483@yahoo.fr,
mais tu dois initialiser n1 et n0 à 0 et ça marche