05.05.2011, 01:31 | #1 (permalink) |
Member
Регистрация: 01.01.2010
Сообщений: 203
Записей в дневнике: 3
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 216
|
Pascal
"В заданном одномерном массиве натуральных чисел найти площадку максимальной длины, площадкой считается подряд идущие равные между собой элементы" Я написал немного, но код ужасен =) readln в конце случайно затесался) |
05.05.2011, 01:31 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Эти темы сильно схожи с вашей, рекомендую пролистать Pascal Pascal На Pascal |
05.05.2011, 08:19 | #2 (permalink) |
Специалист
Регистрация: 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. |
05.05.2011, 13:15 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|