Jump to content

Молба за помощ за програма написана на Паскал


Препоръчан пост

Значи, брат ми има да пише програма на Паскал за Петък и не може да се сети как да я напише. Значи задачата е следната: Да се напише програма, която намира всички естествени числа от интервала [n;m], които се делят на всяка своя цифра (n и m са дадени естествени числа; n<m).

Благодарим предварително (сигурно е нещо просто :blush: )

Link to comment
Сподели другаде

Здравей Dark`Elf!

 

Нищо не разбирам от Паскал, но намерих няколко урока. Дано свършат работа!

 

Заповядай!

 

Решена задача/ да се взаймства нещо /

 

Структура на програма в Паскал, елементи, примери и др.

Link to comment
Сподели другаде

Струва ми се че вникнах в същността на проблема :) .Мисля че ще мога да я напиша скоро.

Program V100;

 

var

 

a:byte;

i,b,m,n:word;

f:boolean;

 

Begin

writeln;

repeat

writeln('Please Enter two N numbers ,n<m ');

readln(n,m);

if not (n<m) then write ('Invalid input ! ')

until n<m;

writeln('OK ,n=',n,' m=',m);

writeln;

f:=true;

for i:=n to m do begin

b:=i;

repeat

a:= b mod 10;

if a=0 then f:=false else

if (i mod a)<>0 then f:=false;

{writeln('A=',a,' B=',b,' i=',i);}

b:=b div 10;

until (b=0) or (f=false);

if f=true then writeln(i) else f:=true end;

readln;

End.

В тази задача трудното е да се извлекат цифрите от числото ,това става с a:= b mod 10 ,където в а остава последната цифра след извършеното делене с остатък mod .После с B извършваме целочислено делене на 10 за да може да намалим числото с една цифра b:=b div 10 - която вече не ни трябва.Вторият цикъл repeat until служи за да провери дали числото се дели на всички свои цифри.Ако е така във флаговата променлива f остава true.Брoйният цикъл FOR служи да смени всички числа от интервала [m,n].А първият цикъл repeat until се използва за защита на входа.

 

Едит:Съжалявам за лошото форматиране на програмата но изглежда форумната система ми подравнява кода какато си намери за добре :( .Програмата съм я изпробвал и работи.

Редактиран от Melmak ®
Link to comment
Сподели другаде

Браво Melmak ®!

Това, което направи е достойно за уважение. Не само материалното може да стимулира човек и даже си мисля, че удовлетворението от това, че си помогнал на някого е най- големия стимул. :bravo:

Link to comment
Сподели другаде

Едит:Съжалявам за лошото форматиране на програмата но изглежда форумната система ми подравнява кода какато си намери за добре :( .Програмата съм я изпробвал и работи.

Използвай тага CODE (код) и няма да имаш проблеми.

Link to comment
Сподели другаде

Мерси ,мерси от толкова благодарности ще взема да се възгордея :) .Всъщност задачката ми беше интересна ,а и къса ,така че не съм направил кой знае какво.

 

Tragedy,видях я тази опция и мислех да я използвам.Само че code има недостатък ,че не мога да подчертавам или променям цвета на части от кода ,за да ги обясня.След това реших че е по-добре да не се правя на преподавател от ТУ София ,така че стана нито риба ,нито рак :) .

 

Dark`Elf,забравих да кажа че този ред {writeln('A=',a,' B=',b,' i=',i);} съм го оставил като коментар и не е задължителен.Оригиналната идея беше да показва как действа програмата като махне тези {} скобки ,но не би следвало да присъства в домашно.Така че може да го изтрие.

Link to comment
Сподели другаде

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гост
Отговори на тази тема

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   Не можете да качите директно снимка. Качете или добавете изображението от линк (URL)

Loading...
×
×
  • Създай ново...