Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Программирование циклов с параметрами

Автор: Stas86 21.11.2010 23:04

Всем привет. Задание такое: найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.

Program st;
uses crt;
function Summ(n:integer):byte;
var s:byte;
begin
s:=0;
while n>0 do
begin
s:=s+n mod 10;
n:=n div 10;
end;
Summ:=s;
end;
var i,j:integer;
begin
clrscr;
for i:=2 to 9 do
begin
writeln('*',i);
for j:=10 to 99 do
if Summ(j)=Summ(j*i) then
write(j,'-',i*j,' ');
writeln;
end;
readln;
end.



Задачка не запускается, выдает ошибки. Посмотрите пожалуйста, подскажите что исправить.


Добавлено через 4 мин.
Ссылается на строку function

Автор: Stas86 22.11.2010 16:10

Уважаемые форумчане, вопрос еще в силе.

Автор: TarasBer 22.11.2010 17:07

Не компилируется что ли?
Не знаю, у меня всё заработало.

Автор: Stas86 22.11.2010 17:54

TarasBer, ты ведь наверняка делал какие-то мелкие поправки в задаче. Можешь выложить сюда свою версию это программы?

Автор: TarasBer 22.11.2010 18:10


Program st;
{$APPTYPE CONSOLE}
function Summ(n:integer):byte;
var s:byte;
begin
s:=0;
while n>0 do
begin
s:=s+n mod 10;
n:=n div 10;
end;
Summ:=s;
end;
var i,j:integer;
begin
for i:=2 to 9 do begin
writeln('*',i);
for j:=10 to 99 do
if Summ(j)=Summ(j*i) then
write(j,'-',i*j,' ');
writeln;
writeln;
end;
readln;
end.



Это для D7. Для Турбо надо убрать строчку {$APPTYPE CONSOLE}

Автор: Stas86 22.11.2010 18:22

Спасибо, теперь работает. Сейчас ошибку буду у себя искать.

Автор: TarasBer 22.11.2010 18:27

Я только убрал uses Crt (в дельфе этого модуля нет), строчку с функцией не трогал, почему твой первый вариант не работал - не знаю.

Автор: Stas86 22.11.2010 18:47

Ошибка была в написании команды function. Букву пропустил, из-за этого и весь кипишь. smile.gif

Автор: volvo 22.11.2010 18:50

Однако, здесь, в первом посте, все правильно. Почему не копируешь программу, а перенабиваешь ее здесь?

Автор: Stas86 22.11.2010 18:54

Да нет, на форум программу занес копированием. А в паскале каким-то образом ошибка была.

Автор: Stas86 26.11.2010 17:12

Парни, приветствую. Подскажите, а как данная задача будет выглядеть без строки function. Преподша сказала, якобы функции мы не проходили, говорит или переделывай или объясняй.

Автор: TarasBer 26.11.2010 18:21

> или переделывай или объясняй.

Выбирай "объясняй".
Объяснить-то сможешь же? Ну так какие проблемы?


Автор: Stas86 26.11.2010 18:26

Объяснить? Нет, такое у меня не получится. Не силен я в этом деле.

Автор: Stas86 6.12.2010 22:38

Народ, помогите в данном вопросе.

Автор: Client 6.12.2010 22:47

просто жесть! пойду повешусь

Program st;
{$APPTYPE CONSOLE}

var i,j:integer;
MyS1, MyS2, s : integer;
i1, j1 : integer;

begin
for i:=2 to 9 do begin
writeln('*',i);
for j:=10 to 99 do begin
MyS1:=0;
j1 := j;
while j1>0 do
begin
MyS1:=MyS1+j1 mod 10;
j1:=j1 div 10;
end;

MyS2:=0;
i1 := j*i;
while i1>0 do
begin
MyS2:=MyS2+i1 mod 10;
i1:=i1 div 10;
end;

if MyS1 = MyS2 then
write(j,'-',i*j,' ');
end;
writeln;
writeln;
end;
readln;
end.

Автор: Stas86 6.12.2010 22:55

Огромное спасибо!

Автор: Lapp 7.12.2010 5:01

Просто чуток покороче..

var
i,j,k,l: integer;

begin
for k:=2 to 9 do begin
Write(k,':');
for i:=1 to 9 do
for j:=0 to 9 do begin
l:=(i*10+j)*k;
if l mod 10+l div 10 mod 10+l div 100=i+j then Write(' ',i,j,'~',l)
end;
WriteLn
end;
ReadLn
end.