Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 05.05.2011, 01:31   #1 (permalink)
Silvertaff
Member
 
Регистрация: 01.01.2010
Сообщений: 203
Записей в дневнике: 3
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 216
По умолчанию Pascal

Не могу решить,помогите пожалуйста
"В заданном одномерном массиве натуральных чисел найти площадку максимальной длины, площадкой считается подряд идущие равные между собой элементы"
Я написал немного, но код ужасен =)
idhia.jpg
readln в конце случайно затесался)
Silvertaff вне форума   Ответить с цитированием

Старый 05.05.2011, 01:31
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти темы сильно схожи с вашей, рекомендую пролистать

Pascal
Pascal
На Pascal

Старый 05.05.2011, 08:19   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

М-да... такие "шедевры" мне давно не попадались... Там что ни строчка, то скрижаль.
Даже и не знаю, что делать... Конечно, я могу написать программку, но мне бы очень не хотелось, чтобы Вы тупо ее перекатали, сдали и забыли. Хоть попытайтесь в основах языка разобраться! Ну как это в цикле по i у Вас условие if i=i+1? Как такое может быть в принципе? Если бы еще if m[j]=m[j+1] - куда ни шло, а такое... Преобразование типа данных из числового в строковый делается специальной стандартной процедурой Str, а q:='i'+'i' выдаст значение q, равное ii. Перед else разделитель ; не ставится, это ошибка, ввод массива отсутствует начисто, readln; в конце не "случайно затесался", а служит для остановки программы, чтобы дать возможность посмотреть на экране результат, и т.д., и т.п., и проч...
Ну ладно, вот программа, решающая данную задачку. Не очень простая, потому некоторые пояснения:
1. Случайным образом заполняется массив из 20 элементов числами в диапазоне от -2 до +1.
2. Массив выводится на экран.
3. Формируются массивы данных по "площадкам":
N - количество "площадок".
p_sq - номер элемента исходного массива, являющегося первым в каждой "площадке".
m_sq - значение одинаковых элементов в "площадке".
n_sq - количество элементов в каждой "площадке".
4. Ищется максимум по длинам "площадок".
5. Выводятся на экран данные обо всех "площадках", имеющих максимальную длину.
Код:
Program OS;

USES CRT;

VAR
 m,m_sq,n_sq,p_sq:Array[1..20] of Integer;
 i,Max_sq,N:Integer;

BEGIN
 Randomize;
 For i:=1 to 20 do
  begin
   m[i]:=Random(4)-2;
   Write(m[i]:3);
  end;
 Writeln;
 i:=1;
 N:=0;
 Repeat
  Inc(N);
  n_sq[N]:=0;
  m_sq[N]:=m[i];
  p_sq[N]:=i;
  While (m[i]=m_sq[N]) and (i<20) do
   begin
    Inc(i);
    Inc(n_sq[N]);
   end;
  If (i=20) and (m[19]=m[20]) then Inc(n_sq[N]);
 Until i=20;
 Max_sq:=0;
 For i:=1 to N do
  If n_sq[i]>Max_sq then Max_sq:=n_sq[i];
 Writeln;
 Writeln('Largest squares:');
 For i:=1 to N do
  If n_sq[i]=Max_sq then
   begin
    Write('from i=',p_sq[i]:2,' to i=',p_sq[i]+Max_sq-1:2);
    Writeln(' square of ',Max_sq,' elements equal to ',m_sq[i]:3);
   end;
 ReadLn;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 05.05.2011, 11:12   #3 (permalink)
Silvertaff
Member
 
Регистрация: 01.01.2010
Сообщений: 203
Записей в дневнике: 3
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 216
По умолчанию

Спасибо за помощь! Я только начал изучать язык, Вашу задачу изучу подробно, это очень интересно
Silvertaff вне форума   Ответить с цитированием
Старый 05.05.2011, 13:15   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Silvertaff Посмотреть сообщение
Спасибо за помощь! Я только начал изучать язык, Вашу задачу изучу подробно, это очень интересно
Ну... задача вообще-то Ваша, а не моя, но, в любом случае - успехов! И обращайтесь, если что - поможем.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 16:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.