Grauznis 0 Posted August 16, 2014 Share Posted August 16, 2014 Uzdevums : Sastādīt programmu, kas atrod dotā naturālā skaitļa ciparu summu; pēc tam – iegūtāskaitļa ciparu summu utt. Līdz palicis viens cipars. Mana programma: Program skaitlis; Var a : longint; Function sk( x : longint) : longint; Var t :longint; Begin t := 0; Repeat t := t + ( x mod 10); x:= x div 10; until x = 0; if (t < 10) then sk := t else sk(t); End; Begin readln(a); writeln(sk(a)); End. Programma drabojas skaitļiem, kā 25 , bet ievadot skaitli 976 izvada 0. Vai kāds varētu paskaidrot kāpēc tā? Pareizo rezultātu izdevās izvadīt ar šadu programmu : Program skaitlis; Var a : longint; Function sk( x : longint) : longint; Var t :longint; Begin t := 0; Repeat t := t + ( x mod 10); x:= x div 10; until x = 0; if (t < 10) then begin writeln(t); halt; end else sk(t); End; Begin readln(a); sk(a); End. Kāpēc pirmā programma nedarbojas nedorbojas? Quote Link to post Share on other sites
marrtins 794 Posted August 16, 2014 Share Posted August 16, 2014 if (t < 10) then sk := t else sk(t); if (t < 10) then sk := t else sk:=sk(t); Quote Link to post Share on other sites
Grauznis 0 Posted August 16, 2014 Author Share Posted August 16, 2014 Paldies! Nepamanīju. Quote Link to post Share on other sites
AndrisBB 1,459 Posted August 16, 2014 Share Posted August 16, 2014 (edited) Neko nezinu par paskalu, bet man izskatas ka tu te neko neatgriez, ja izpildas ELSE if (t < 10) then sk := t else sk(t); Manuprat vajadzetu kka ta: if (t < 10) then sk := t else sk := sk(t); .... oi, sorry izskatas ka pa lenu domaju un rakstu Edited August 16, 2014 by AndrisBB Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.