IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Обработка последовательностей значений
status
сообщение 20.11.2006 21:52
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


Задача : Дана последовательность чисел. Построить последовательность номеров позиций, откуда начинаются подряд идущие значения, расположенные в порядке убывания.

Помогите пожалуйста, я не совсем понимаю что и как надо сделать в этой задаче! Объясните пожалуйста как решить эту задачу. unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.11.2006 21:55
Сообщение #2


Гость






Зайди вот сюда: Массивы. Матрицы. Типичные задачи -> Как найти в массиве максимальную возрастающую последовательность символов?
может, это чем-то поможет... (сам принцип поиска для возрастающей и для убывающей последовательности - одинаков)
 К началу страницы 
+ Ответить 
status
сообщение 20.11.2006 21:59
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


спасибо , сейчас посмотрю!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
status
сообщение 20.11.2006 23:22
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


Пересмотрел всё , видимо мне не дано сообразить её! помогите решить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
status
сообщение 21.11.2006 18:31
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


А возможно решить эту задачу без использования массивов?

Сообщение отредактировано: status - 21.11.2006 18:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.11.2006 18:44
Сообщение #6


Гость






Можно... У меня в каждый момент времени сравниваются только 2 жлемента: текущий и предыдущий, поэтому:

const
 n = 15;

function find_ascend(var max: integer): integer;

 var curr, start: integer;
     prevArr, nextArr: integer;

 function check_max(i: integer): integer;
   begin
     if max < curr then
       begin
         max := curr;
         check_max := i - curr + byte(i = pred(n))
       end
     else check_max := start
   end;

 var
   i: integer;

 begin
   write('--> '); readln(prevArr);

   max := 0; curr := 1;
   start := 1;

   for i := 1 to pred(n) do
     begin
       write('--> '); readln(nextArr);
       if prevArr < nextArr then
         inc(curr)
       else
         begin
           start := check_max(i);
           curr := 1
         end;

       prevArr := nextArr;
     end;
   start := check_max(i);
   find_ascend := start
end;

var _start, _max: integer;
begin
 _start := find_ascend(_max);
 writeln('start = ', _start, ' len = ', _max)
end.
(от N лень было избавляться, просто организуй ввод так, чтобы при вводе определенного значения он прекращался)

Как видишь, массивы не используются.
 К началу страницы 
+ Ответить 
status
сообщение 21.11.2006 23:57
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


Наверно я неправильно выразился или просто не понел!

Вот мне в визуальной програме дана последовательность которая вводится в ListBox и надо построить новую последовательность номеров позиций, откуда начинаются подряд идущие значения, расположенные в порядке убывания и вывести в другой ListBox .

На сколько я понимаю это решение должно быть гораздо проще предложеного. На сколько я правильно всё понимаю??! unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.11.2006 0:12
Сообщение #8


Гость






Ты опять недоговариваешь...

Допустим, вот содержимое твоего ListBox1:
Цитата
2
3
5
9 // индекс = 3
8
7
6
8 // индекс = 7
7
6
Что должно быть в ListBox2? 3,4,5,6? С какой стати? Есть же еще одна последовательность, получается, что ЭТА - не является убывающей... 7,8,9? А почему именно ЭТА? Есть же более длинная?

Ты ПОЛНОСТЬЮ условие поставь... Что ИМЕННО ты хочешь находить? Максимальную? Завершающую? Первую? Телепатов у нас нет...
 К началу страницы 
+ Ответить 
Michael_Rybak
сообщение 22.11.2006 1:38
Сообщение #9


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


Цитата(volvo @ 21.11.2006 23:12) *

Телепатов у нас нет...


То есть как это нет? А как же те, которые все время в отпуске?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
status
сообщение 22.11.2006 10:13
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


Цитата

Если мне дано в Listbox1:
2
3
2
1
10
9
20
15
4
30

То в ListBox2 получится:
1
4 {номера позиций откуда начинаются подряд идущие значения, расположенные в порядке убывания}
6


Сообщение отредактировано: status - 23.11.2006 18:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
status
сообщение 23.11.2006 18:40
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +



procedure TForm1.Button2Click(Sender: TObject);
 var i:integer;
begin
 i:=0;
 Listbox2.Items.Clear;
 Repeat
  if StrToInt(Listbox1.Items[i])>StrToInt(Listbox1.Items[i+1]) then
   begin
    Listbox2.Items.Add(IntToStr(i));
    While StrToInt(Listbox1.Items[i])>StrToInt(Listbox1.Items[i+1]) do inc(i)
   end;
  inc(i);
 Until i=Listbox1.Items.Count-1;

end;

end.



Вот написал , ответ выдает но при этом и выдает какуюто ошибку! Проверте пожалуйста в чем могут быть проблемы!


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
status
сообщение 29.11.2006 16:20
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 35
Пол: Мужской
Реальное имя: andrey

Репутация: -  0  +


ПОМОГИТЕ ПОЖАЛУЙСТА! unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Reptile
сообщение 29.11.2006 17:54
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Вылазиш за пределы Listbox1.Items
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 19.07.2025 4:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"