Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2008, 01:20   #1
Gobl1n
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию Помогите найти ошибку в коде, пожалуйста

Разработать процедуру, которая формирует число палиндром из целого числа, используя алгоритм:
1) Если это число не палиндром - то изменить порядок цифр на обратный и сложить исходное число с получившимся
2) Если сумма не палиндром - то повторим действия до получения числа палиндрома
Примечание: Результатом процедуры является число палиндром и кол-во применений алгоритма для его получения

Кое-как сам составил код, но почему-то не работает (((((

procedure pal(n:integer; var k:integer);
var x,y,t:integer;
begin
y:=0;
t:=0;
x:= n mod 10;
while n mod 10 <>0 do
begin
t:=x;
x:=n mod 10;
y:=x*10+x;
end;
y:=y+t;
k:=y;
end;


var
a,b,c,d,i:integer;
begin
writeln(' Vvedite a= '); readln(a);
pal(a,b);
c:=0;
d:=1;
i:=0;
while (a<>b) and (c<>d) do
begin
pal(a,b);
c:=a+b;
i:=i+1;
pal(c,d);
end;
writeln(c);
writeln(i);
readln;
end.



исправьте пожалуйста
Gobl1n вне форума Ответить с цитированием
Старый 30.11.2008, 01:48   #2
SunKnight
Участник клуба Подтвердите свой е-майл
 
Аватар для SunKnight
 
Регистрация: 14.12.2007
Сообщений: 1,434
По умолчанию

Код:
while n mod 10 <>0 do
begin
t:=x;
x:=n mod 10;
y:=x*10+x;
end;
это бесконечный цыкл, походу там еще много багов
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
SunKnight вне форума Ответить с цитированием
Старый 30.11.2008, 10:30   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

То что Вы написали, это не код, это бессмысленный набор символов. Прежде всего надо обдумать задачу, набросать ее на бумаге, разобраться что к чему, а потом писать. Если Вы не усвоили смысл задачи, последнее делать не нужно.
Вот вариант решения.
Код:
uses crt;

procedure CrPal(x:longint; var z:longint; var q:byte); //собственно процедура
function Palindrom(a:Longint):boolean; //функция определения палиндрома
var a1,s:longint;
    k:byte;
begin
a1:=a;s:=0;//запоминаем исходное число, поскольку мы его уничтожим
while a>0 do //пока число больше 0
  begin
   k:=a mod 10; //отделяем последнюю цифру
   s:=10*s+k; //прибавляем ее к сумме
   a:=a div 10;//берем число без последней цифры и все повторяем
  end;
if s=a1 then Palindrom:=true //если полученное число=исходному
else Palindrom:=false;
end;
function Revers(a:longint):longint; 
//функия обращения числа, то же самое, только не сравниваем
var s:longint;
    k:byte;
begin
s:=0;
while a>0 do
  begin
   k:=a mod 10;
   s:=10*s+k;
   a:=a div 10;
  end;
Revers:=s;
end;
begin   //выполнение самой процедуры 
if Palindrom(x) then 
  begin
   write('Vvedeno chiso palindrom!');
   readln;
   halt; //если введен палиндром, заканчиваем
  end
else
  begin
   q:=0;z:=x; //счетчик=0, запоминаем исходное число
   repeat
    inc(q); //увеличиваем счетчик
    z:=z+Revers(z); //складываем число со своим отображением
   until Palindrom(z); //если получаем палиндром, заканчиваем
   writeln('Rezultat=',z);
   write('Kolichestvo primenenij=',q);
  end;
end;

var n,n1:longint;//раздел переменных основной программы
    kp:byte;
begin  //начало программы
clrscr;
write('n=');readln(n);
CrPal(n,n1,kp);
readln
end.
puporev вне форума Ответить с цитированием
Старый 30.11.2008, 17:44   #4
Gobl1n
 
Регистрация: 30.11.2008
Сообщений: 4
По умолчанию

Спасибо большое! смысл-то я понял, просто умения программировать пока мало ) еще раз спасибо
Gobl1n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в коде C++ Жека:) Помощь студентам 15 29.10.2008 11:32
помогите найти ошибку в коде плиз Айат Помощь студентам 2 01.10.2008 17:43
Памагите найти ошибку в коде...С++ Goblin Помощь студентам 1 13.05.2008 18:15
помогите найти ошибку в коде Joker88 Помощь студентам 1 04.03.2008 12:43