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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 10:06   #1
lilia2121
в раздумьях
Пользователь
 
Аватар для lilia2121
 
Регистрация: 29.03.2010
Сообщений: 25
По умолчанию написать алгаритм по программе(турбо паскаль)

Код:
uses crt; 
var P:array[1..20] of integer; 
etalon,p12,i1,i2,vse_ravni: integer; 
begin 
clrscr; randomize; 
vse_ravni:=1; 
P[1]:=random(100); 
write(P[1],' '); 
etalon:=P[1]; 
for i1:=2 to 20 do begin 
P[i1]:=random(100); 
if (P[i1]>etalon) or (P[i1]<etalon) then vse_ravni:=0; 
write(P[i1],' '); 
end; 
writeln; 
writeln; 
writeln; 
writeln; 
if (vse_ravni=0) then begin 
for i2:=1 to 20 do begin 
for i1:=1 to 19 do begin 
if (P[i1]>P[i1+1]) then begin 
p12:=P[i1+1]; 
P[i1+1]:=P[i1]; 
P[i1]:=P12; 
end; 
end; 
write(P[21-i2],' '); 
end; 
end 
else begin 
for i1:=1 to 20 do begin 
if (i1 mod 2)=1 then begin P[i1]:=1; end; 
write(P[i1],' '); 
end; 
end; 
readkey; 
end.
Всё понятно но мы же неможем написать поочерёдно for i2:=1 to 20 do begin
for i1:=1 to 19 do begin
Как быть?

Последний раз редактировалось Stilet; 13.05.2010 в 11:42.
lilia2121 вне форума Ответить с цитированием
Старый 13.05.2010, 10:29   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

1. Пользуйтесь тегом CODE. Выделите текст программы и нажмите значок # на панели.
2. Почему нельзя? Цикл в цикле организовывается очень часто при работе с двухмерными массивами.
Неприятности приходят и уходят, а жизнь продолжается!
Sweta вне форума Ответить с цитированием
Старый 13.05.2010, 11:40   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Эти вложенные циклы лучше записать так

Код:
for i1:=1 to 19 do
  for i2:=i1+1 to 20 do
    begin
      if (P[i1]>P[i2]) then 
        begin
          p12:=P[i2];
          P[i2]:=P[i1];
          P[i1]:=P12;
        end;
    end
Это обычная линейная сортировка...

А вот тут
Цитата:
Код:
if (P[i1]>etalon) or (P[i1]<etalon) then vse_ravni:=0;
лучше написать так
Код:
if P[i1]<>etalon then vse_ravni:=0;
А еще более грамотно определить переменную vse_ravni:boolean, т.е. как логическую, что более логично...

А вот в этой части
Цитата:
if (i1 mod 2)=1 then
проверку на нечетность индекса массива лучше сделать с применением функции odd()
Код:
if odd(i1) then
Код становится более читаем...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 13.05.2010 в 11:54.
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Турбо Паскаль sanchez Фриланс 6 22.03.2010 17:11
турбо паскаль RenFAn Фриланс 10 18.03.2010 09:27
Турбо паскаль Viktoria90 Помощь студентам 1 29.12.2009 23:56
помогите пожалуйста написать программу в турбо паскале koshpar Паскаль, Turbo Pascal, PascalABC.NET 0 04.05.2009 16:49
Турбо паскаль Gabi Помощь студентам 2 24.12.2008 22:18