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

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задачка с процедурой., Как найти самую длиную цепь из нулей и показать их позицию в векторе.
сообщение
Сообщение #1


Бывалый
***

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

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


Привет всем! Вот такая задачка, есть вектор A[1..100] of integer;
надо создать процедуру которая будет показывать сколько нулей в самой длиной цепи из нулей в векторе, и показывать позиции в векторе первого и последнего нуля в цепи, например:
x 0000 xx 00
Результат:
нулей 4
первая позиция нуля -2
последнея позиция нуля -5.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(DarkWishmaster @ 9.12.2010 19:58) *
Привет всем! Вот такая задачка,
Привет и тебе! ))
Ну, задачка - а дальше-то что?.. blink.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

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

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


С каких пор вообще тут пошла привычка не делать ни-че-го для решения своей задачи? Такого я больше ни на одном сайте не вижу, чтобы кто-то приходил и говорил "сделайте за меня", а если такое и происходит, то тема тонет под слоем жирного ржача.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(TarasBer @ 10.12.2010 10:50) *
С каких пор вообще тут пошла привычка не делать ни-че-го для решения своей задачи? Такого я больше ни на одном сайте не вижу, чтобы кто-то приходил и говорил "сделайте за меня", а если такое и происходит, то тема тонет под слоем жирного ржача.
Не, ну ладно еще ниче не сделают - так еще даже и НЕ ПОПРОСЯТ РЕШИТЬ (или там помочь..) Просто скопипастил условие - и пошел отдыхать, добрый дядя все за меня сделает!
Автор этой темы хоть "привет" сказал. И на том спасибо..

БЛИН!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

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

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


Извините конечно, но я не просто скопировал и пошёл отдыхать, и я тоже не люблю такие вещи. Я два часа думал, ну и как-бы получился алгоритм для поиска цепей, но как показать позицию первого и последнего ноля так и не нашёл. Я в 10 классе. процедуры мы вообще не учим, я самостоятельно по книге учусь и на 11 класс, поэтому и несколько туплю.
Мне не нужно что бы вы сделали для меня програму, а подкинули идею как это можно сделать.
Спасибо за внимание.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


Идея....

1. Считаем, что и начало, и конец максимальной последовательности - 0 элемент (если в массиве нумерация с 1)
2. Идем по массиву. Если встретили 0, ставим флажок в значение "истина"; запоминаем положение начала цепочки.
3. Пока флажок в истине, идем по массиву в поиске первого НЕнулевого элемента (или конца массива).
Как только нашли - сбрасываем флажок, запоминаем конец последовательности.
Сравниваем длину текущей последовательности с длиной максимальной. Если у текущей больше, меняем значения начала и конца для максимальной.

Кода не будет, пока ты САМ не приложишь хоть какие-то усилия к решению.

З.Ы. 10 класс - это вполне взрослые люди, способные отвечать за свои поступки. ИМХО.

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Бывалый
***

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

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


k:=0; l:=0;
for i:=1 to n do begin
if a[i]=0 then k:=k+1;
if k>l then begin l:=k; k:=0; end;
writeln(l);о во
ну тут по поиску цепи более менее мне понятно, но как найти позицию в векторе первого и последнего нуля.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


2 мисс_граффити:
флажок тут совершенно лишний.. Признаком того, что найдена последовательность, может являться само отличие ее длины от нуля. Но и это тоже лишнее smile.gif, потому что можно считать что мы ВСЕГДА внутри последовательности нулей (может быть, нулевой длины)), то есть поиск ее вообще отпадает. И последнее: запоминать и начало, и конец - тоже слишком много чести, когда есть длина smile.gif.

2 DarkWishmaster:
если что непонятно - спрашивай..

const
n=60;

var
i,l,m,x: integer;
a: array [1..n] of integer;

begin
Randomize;
for i:=1 to n do a[i]:=Random(3);
for i:=1 to n do Write(a[i]:(10-(i-1)mod 10) div 5);
WriteLn;

l:=0;
for i:=1 to n do begin
if a[i]=0 then Inc(l) else l:=0;
if l>m then begin
m:=l;
x:=i
end
end;

Write('max=',m);
if m>0 then Write(' x1=',x-m+1,' x2=',x);
ReadLn
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Бывалый
***

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

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


Ого спасибо огромное!
1)random(3) он заполняет вектор числами 0,1,2 -> вопрос, можно ли например заполнить тоже по 3 только в другом диапазоне -6,7,9. Или вообще задавать числа? И ещё вопрос, какую функцию выполняеть Randomize? потому что если его удалить то никаких изменений.

Дальше всё понятно, спасибо.

Такое страное ощущения когда думаешь и не получаеться что-то сделать а потом видешь как это просто )


Сообщение отредактировано: DarkWishmaster -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Злостный любитель
*****

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

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


Ну, например, random(10) выдаёт число от 0 до 9.
А вот random(17)-3 выдаёт число от -3 до 13

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


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Бывалый
***

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

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


Спасибо всем!
Теперь наверно тему можно закрыть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


1) в другом диапазоне можно, но он должен быть непрерывный. например -6,-7,-8. или 7,8,9. то есть подряд числа чтобы шли. конечно, при желании можно и -6,7,9 получить, но это надо будет уже писать свою обработку результатов.
2) инициализирует генератор случайных чисел. грубо говоря, чтобы при каждом новом запуске массив получался свой, а не всегда одинаковые.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 27.10.2020 11:02
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name