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


Ответ
 
Опции темы Опции просмотра
Старый 28.12.2012, 15:21   #1 (permalink)
Student
Member
 
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Пилообразная последовательность, Pascal

Последовательность a1, a2, a3, … , an-1, an называется пилообразной, если она удовлетворяет одному из следующих условий:
1) a1 < a2 > a3 < … > an-1 < an
2) a1 > a2 < a3 > … < an-1 > an

Задание:
заполнить файл txt целыми числами с консоли, вывести самую длинную пилообразную последовательность.

Помогите, пожалуйста, с решением!! Заранее спасибо

Имеется код схожей задачи на массивы, но он немножко неверно работает:

uses crt;
const nmax=30;
var a:array[1..nmax] of byte;
n,i,j,k,mx,imx:byte;
begin
clrscr;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы массива, в том числе образующие пилообразные последовательности');
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
end;
clrscr;
writeln('Массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln;
i:=2;mx:=0;imx:=0;
while i<n do
if ((a[i]>a[i-1])and(a[i]>a[i+1]))or((a[i]<a[i-1])and(a[i]<a[i+1])) then
begin
j:=i;k:=2;
while(j<=n)and(((a[j]>a[j-1])and(a[j]>a[j+1]))or((a[j]<a[j-1])and(a[j]<a[j+1]))) do
begin
j:=j+1;
k:=k+1;
end;
if k>mx then
begin
mx:=k;
imx:=i-1;
end;
i:=i+k;
end
else i:=i+1;
if mx=0 then write('Нет пилообразной последовательности!')
else
begin
writeln('Максимальная пилообразная последовательность одинаковых чисел=',mx);
for i:=imx to imx+mx-1 do
write(a[i],' ');
writeln;
write('Её длина=',mx);
end;
readln
end.
Student вне форума   Ответить с цитированием

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

Могу вам помочь отправив ссылки на похожие обсуждения

Pascal
Pascal ABC
Последовательность чисел. Паскаль
Pascal RGR
Pascal

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

Цитата:
Сообщение от Student Посмотреть сообщение
Имеется код схожей задачи на массивы, но он немножко неверно работает:
В чем именно "неверно"? Погонял программу и ошибок не обнаружил.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.12.2012, 16:06   #3 (permalink)
Student
Member
 
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Если последовательность начинается с убывания, то вроде нормально, а если с возрастания но есть сбои
попробуйте ввести: 1 2 1 2 1 2
Student вне форума   Ответить с цитированием
Старый 28.12.2012, 17:00   #4 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Student Посмотреть сообщение
Если последовательность начинается с убывания, то вроде нормально, а если с возрастания но есть сбои
попробуйте ввести: 1 2 1 2 1 2
Попробовал. Нолик в конце присобачивается. Об этом речь?
Vladimir_S вне форума   Ответить с цитированием
Старый 28.12.2012, 17:02   #5 (permalink)
Student
Member
 
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Да, и прибавляет еще этот нолик к длине строки
Student вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 28.12.2012, 17:05   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Понятно. Всё, что могу обещать - посмотрю, как будет время. Сегодня вечером либо завтра.
Vladimir_S вне форума   Ответить с цитированием
Старый 28.12.2012, 17:08   #7 (permalink)
Student
Member
 
Регистрация: 14.12.2012
Сообщений: 13
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, но дело даже не в этом нолике - надо это как-то реализовать через файл txt
Но за любую помощь все-равно спасибо.
Student вне форума   Ответить с цитированием
Старый 29.12.2012, 08:16   #8 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Такое же задание у меня но только мне надо создать типизированный файл .dat целых чисел и вывести на экран самую длинную пилообразную последовательность.
hamchuk250894 вне форума   Ответить с цитированием
Старый 29.12.2012, 11:44   #9 (permalink)
hamchuk250894
Member
 
Регистрация: 09.12.2012
Сообщений: 45
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

но только я тоже понять не могу как сделать.
hamchuk250894 вне форума   Ответить с цитированием
Старый 29.12.2012, 13:24   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

В общем так, ребята - подзавяз я с вашей задачкой, признаюсь честно. Попробую сегодня добить. Когда именно - точно не знаю.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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


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

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




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

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