Exercice de programmation pascal

Fermé
feezbury Messages postés 9 Date d'inscription dimanche 8 avril 2007 Statut Membre Dernière intervention 8 janvier 2009 - 8 janv. 2009 à 21:53
 ahmed.becha.gmail - 15 avril 2011 à 19:24
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.
A voir également:

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,
1
non, ch n'est pas utilisé dans le programme
mais tu dois initialiser n1 et n0 à 0 et ça marche
0