اقتباس:
المشاركة الأصلية كتبت بواسطة salemk
التمرين الثاني
امكانية استعمال mod et div
كود:
program somme;
uses wincrt;
var n:integer;
function s(n:integer):integer;
begin
if n<10 then
s:=n
else
s:=n mod 10+s(n div 10);
end;
begin
repeat
readln(n);
until n>=0;
writeln(s(n));
end.
une solution itérative
كود:
programme somme ;
uses wincrt ;
var
n,s :integer ;
begin
readln(n) ;
repeat
s :=s+s mod 10 ;
n := n div 10 ;
until n=0 ;
writeln(s) ;
باستعمال chaine
كود:
program somme ;
uses wincrt ;
var
n,s,i,d,e :integer ;
ch:string;
begin
readln(n) ;
str(n,ch);
for i:=1 to length(ch) do
begin
val(ch[i],d,e);
s:=s+d;
end;
writeln(s);
end.
une solution récursive
كود:
program somme ;
uses wincrt ;
var
n:integer ;
ch:string;
function som(s:string):integer;
var
d,e:integer;
begin
if length(s)=1 then
begin
val(s,d,e);
som:=d;
end
else
begin
val(s[1],d,e);
som:=d+som(copy(s,2,length(s)-1));
end;
end;
begin
readln(n) ;
str(n,ch);
writeln(som(ch));
end.
|
البرنامج خاطئ اخي للاسف
مثلا لو ادخلت مثلا 987654321
ففي 3 برامج سوف يظهر النتيجة 17 والتي هي مجموع 9+8 ولم يقم بباقي المجموع
الا انك ساعدتني في التفكير في عبارة المجموع
وبرنامج اخر يظهر النتيجة 0