divisibilité
3 participants
Page 1 sur 1
divisibilité
Merci Mdme pour le programme de PGCD
et voci le programme du divisibilité:
uses wincrt;
var
a:string;
i,choix:integer;
procedure saisie(var a:string);
var
test:boolean;
i,n,e:integer;
begin
repeat
write('donner un nombre = ');readln(a);
test:=true;
i:=0;
repeat
i:=i+1;
val(a[i],n,e);
test:=e=0;
until(not test)or(i>=length(a));
until test;
end;
function div2(a:string):boolean;
var
u,e:integer;
begin
val(a[length(a)],u,e);
while u>=2 do
u:=u-2;
div2:=u=0;
end;
function div3(a:string):boolean;
var
u,e,i,s:integer;
begin
s:=0;
for i:=1 to length(a) do
begin
val(a[i],u,e);
s:=s+u;
end;
while s>=3 do
s:=s-3;
div3:=s=0;
end;
function div4(a:string):boolean;
var
u,e:integer;
begin
if length(a)>1 then
val(a[length(a)-1]+a[length(a)],u,e)
else
val(a,u,e);
while u>=4 do
u:=u-4;
div4:=u=0;
end;
function div5(a:string):boolean;
var
e,u:integer;
begin
val(a[length(a)],u,e);
div5:=(u=0)or(u=5);
end;
function div7(a:string):boolean;
var
e:integer;
n:longint;
begin
val(a,n,e);
if n>9 then
while (n div 10)-2*(n mod 10)>0 do
begin
n:=(n div 10)-2*(n mod 10);
end;
while n>=7 do
n:=n-7;
div7:=n=0;
end;
function div9(a:string):boolean;
var
u,e,i,s:integer;
begin
s:=0;
for i:=1 to length(a) do
begin
val(a[i],u,e);
s:=s+u;
end;
while s>=9 do
s:=s-9;
div9:=s=0;
end;
function div11(a:string):boolean;
var
i,e,s,n,x:integer;
begin
s:=0;
for i:=1 to length(a)do
begin
val(a[i],x,e);
if i mod 2=0 then
s:=s-x
else
s:=s+x;
end;
n:=abs(s);
while n>=11 do
n:=n-11;
div11:=n=0;
end;
function div25(a:string):boolean;
var
u,e:integer;
begin
if length(a)>1 then
val(a[length(a)-1]+a[length(a)],u,e)
else
val(a,u,e);
while u>=25 do
u:=u-25;
div25:=u=0;
end;
procedure verifier(x:integer;a:string);
begin
case x of
2:if div2(a) then writeln(a,' est divisible par 2');
3:if div3(a) then writeln(a,' est divisible par 3');
4:if div4(a) then writeln(a,' est divisible par 4');
5:if div5(a) then writeln(a,' est divisible par 5');
6:if (div2(a))and(div3(a)) then writeln(a,' est divisible par 6');
7:if div7(a) then writeln(a,' est divisible par 7');
8:if (div2(a))and(div4(a)) then writeln(a,' est divisible par 8');
9:if div9(a) then writeln(a,' est divisible par 9');
11:if div11(a) then writeln(a,' est divisible par 11');
25:if div25(a) then writeln(a,' est divisible par 25');
end;
end;
begin
saisie(a);
clrscr;
writeln('Pour verifier la divisibilité de ',a,' par 2 appuyer sur 2');
writeln(' 3 appuyer sur 3');
writeln(' 4 appuyer sur 4');
writeln(' 5 appuyer sur 5');
writeln(' 6 appuyer sur 6');
writeln(' 7 appuyer sur 7');
writeln(' 8 appuyer sur 8');
writeln(' 9 appuyer sur 9');
writeln(' 11 appuyer sur 11');
writeln(' 25 appuyer sur 25');
repeat
readln(choix);
until (choix in[2..9])or(choix=11)or(choix=25);
verifier(choix,a);
end.
Ilyes KHAILI- Messages : 24
Date d'inscription : 13/11/2008
Age : 34
Re: divisibilité
ce programme ne fait pas la divisibilite par deux
il faut verifier !!!!!!!!!!!!!!!!!!!!!!!!!!!
il faut verifier !!!!!!!!!!!!!!!!!!!!!!!!!!!
bouhmid- Messages : 15
Date d'inscription : 15/02/2009
Excellent travail !
Bravo, Bravo, Bravissimo !!! Continuez comme ça. A propos de division par 2 ça marche aussi. Très bien Ilyes et merci pour le partage.
Hanafi- Messages : 106
Date d'inscription : 25/10/2008
Re: divisibilité
Merci Mme
mais j'ai oublier de mettre le message si le nombre n'est pas divisible,
donc il faut modifier la procedure verifier par :
procedure verifier(x:integer;a:string);
begin
case x of
2:begin if div2(a) then writeln(a,' est divisible par 2')else writeln(a,' n''est pas divisible par 2');end;
3:begin if div3(a) then writeln(a,' est divisible par 3')else writeln(a,' n''est pas divisible par 3');end;
4:begin if div4(a) then writeln(a,' est divisible par 4')else writeln(a,' n''est pas divisible par 4');end;
5:begin if div5(a) then writeln(a,' est divisible par 5')else writeln(a,' n''est pas divisible par 5');end;
6:begin if (div2(a))and(div3(a)) then writeln(a,' est divisible par 6')else writeln(a,' n''est pas divisible par 6');end;
7:begin if div7(a) then writeln(a,' est divisible par 7')else writeln(a,' n''est pas divisible par 7');end;
8:begin if (div2(a))and(div4(a)) then writeln(a,' est divisible par 8')else writeln(a,' n''est pas divisible par 8');end;
9:begin if div9(a) then writeln(a,' est divisible par 9')else writeln(a,' n''est pas divisible par 9');end;
11:begin if div11(a) then writeln(a,' est divisible par 11')else writeln(a,' n''est pas divisible par 11');end;
25:begin if div25(a) then writeln(a,' est divisible par 25')else writeln(a,' n''est pas divisible par 25');end;
end;
end;
mais j'ai oublier de mettre le message si le nombre n'est pas divisible,
donc il faut modifier la procedure verifier par :
procedure verifier(x:integer;a:string);
begin
case x of
2:begin if div2(a) then writeln(a,' est divisible par 2')else writeln(a,' n''est pas divisible par 2');end;
3:begin if div3(a) then writeln(a,' est divisible par 3')else writeln(a,' n''est pas divisible par 3');end;
4:begin if div4(a) then writeln(a,' est divisible par 4')else writeln(a,' n''est pas divisible par 4');end;
5:begin if div5(a) then writeln(a,' est divisible par 5')else writeln(a,' n''est pas divisible par 5');end;
6:begin if (div2(a))and(div3(a)) then writeln(a,' est divisible par 6')else writeln(a,' n''est pas divisible par 6');end;
7:begin if div7(a) then writeln(a,' est divisible par 7')else writeln(a,' n''est pas divisible par 7');end;
8:begin if (div2(a))and(div4(a)) then writeln(a,' est divisible par 8')else writeln(a,' n''est pas divisible par 8');end;
9:begin if div9(a) then writeln(a,' est divisible par 9')else writeln(a,' n''est pas divisible par 9');end;
11:begin if div11(a) then writeln(a,' est divisible par 11')else writeln(a,' n''est pas divisible par 11');end;
25:begin if div25(a) then writeln(a,' est divisible par 25')else writeln(a,' n''est pas divisible par 25');end;
end;
end;
Ilyes KHAILI- Messages : 24
Date d'inscription : 13/11/2008
Age : 34
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|