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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2011, 18:32   #1
Azizus
 
Регистрация: 27.03.2011
Сообщений: 7
По умолчанию облегчить готовую программу

Смысл в том что написал программу по палиндромам(4х значные),все пашет хорошо
только есть одно но программа долго думает
помогите хотябы мыслями как ее можно облегчить? мб циклы другие юзать?
(
uses crt;
var i,j,c,d,n,e,x,k,y,s,w,m,t,r,z:integ er;
a:array[1..250] of integer;
begin
clrscr;
readln(n);
i:=1;
while i<=n do begin
read(a[i]); end;
for j:=1 to n-1 do
for e:=j+1 to n do
begin
c:=a[j] div 100;
k:=a[e] mod 100;
m:=c div 10;
s:=k mod 10;
t:=c mod 10;
r:=k div 10;
if (m=s)and(t=r) then
d:=d+1;
end;
d:=d*2;
writeln(d);
readkey;
end.

)
Azizus вне форума Ответить с цитированием
Старый 01.04.2011, 20:58   #2
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Как я понял надо наййти равные палиндромы?
Код:
uses crt;
function Palindrom(x:integer):boolean;
begin
   Palindrom:=(x div 1000 = x mod 10)and(x div 100-x mod 100 = x div 10 - x mod 10)
end;
var i,j,n:integer;
a:array[1..250] of integer;
begin
clrscr;
readln(n);
i:=1;
while i<=n do begin
read(a[i]);inc(i); end;
d:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
if Palindrom(a[i])and Palindrom(a[j])and (a[i]=a[j]) then
  inc(d)
writeln(d);
readkey;
end.
или найти число всеч чисел которые равны
обротно записанным числам др числа?
Тада
Код:
Procedure Prover(x,y:integer):boolean;
begin
Prover:=(x div 1000 = y mod 10)and(x div 100-x mod 100 = y div 10 - y mod 10)
end;
var a: array[1..250]of integer;
  i,j,n,f:integer;
begin
readln(n);
for i:=1 to 250 do
read(a[i]);
f:=0;
for i:= 1 to n-1 do
for j:=i+1 to n do
 if Prover(a[i],a[j])then inc(f);
writeln(f);
writeln('Vce');
readln
end.
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 03.04.2011, 11:49   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

вынести операции НЕ использующие ii из внутреннего цикла
( зачем n-j раз считать ОДНО и тоже).
Код:
for j:=1 to n-1 do begin
  c:=a[j] div 100;
  m:=c div 10;
  t:=c mod 10;
  for e:=j+1 to n do begin
    k:=a[e] mod 100;
    s:=k mod 10;
    r:=k div 10;
    if (m=s)and(t=r) then
      d:=d+1;
  end;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.04.2011 в 14:47.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать готовую программу "условно-бесплатной"? **Татьяна** Безопасность, Шифрование 3 13.02.2011 13:08
Помогите облегчить работу Virus-by Microsoft Office Excel 3 30.07.2010 18:41
Из Pascal'я в Delphi переделать готовую программу. Tonik_A Фриланс 1 12.05.2010 21:38
Нужно облегчить создание расписания k0k0 Microsoft Office Excel 1 12.04.2010 22:15
Как готовую программу в С++ перевести в форму? Жужа Помощь студентам 8 21.10.2009 18:43