Помощь - Поиск - Пользователи - Календарь
Полная версия: Программирование циклов с параметрами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Stas86
Всем привет. Задание такое: найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 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
Уважаемые форумчане, вопрос еще в силе.
TarasBer
Не компилируется что ли?
Не знаю, у меня всё заработало.
Stas86
TarasBer, ты ведь наверняка делал какие-то мелкие поправки в задаче. Можешь выложить сюда свою версию это программы?
TarasBer

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
Спасибо, теперь работает. Сейчас ошибку буду у себя искать.
TarasBer
Я только убрал uses Crt (в дельфе этого модуля нет), строчку с функцией не трогал, почему твой первый вариант не работал - не знаю.
Stas86
Ошибка была в написании команды function. Букву пропустил, из-за этого и весь кипишь. smile.gif
volvo
Однако, здесь, в первом посте, все правильно. Почему не копируешь программу, а перенабиваешь ее здесь?
Stas86
Да нет, на форум программу занес копированием. А в паскале каким-то образом ошибка была.
Stas86
Парни, приветствую. Подскажите, а как данная задача будет выглядеть без строки function. Преподша сказала, якобы функции мы не проходили, говорит или переделывай или объясняй.
TarasBer
> или переделывай или объясняй.

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

Stas86
Объяснить? Нет, такое у меня не получится. Не силен я в этом деле.
Stas86
Народ, помогите в данном вопросе.
Client
просто жесть! пойду повешусь
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
Огромное спасибо!
Lapp
Просто чуток покороче..
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.