Задачка с процедурой., Как найти самую длиную цепь из нулей и показать их позицию в векторе. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задачка с процедурой., Как найти самую длиную цепь из нулей и показать их позицию в векторе. |
DarkWishmaster |
Сообщение
#1
|
Бывалый Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: 3 |
Привет всем! Вот такая задачка, есть вектор A[1..100] of integer;
надо создать процедуру которая будет показывать сколько нулей в самой длиной цепи из нулей в векторе, и показывать позиции в векторе первого и последнего нуля в цепи, например: x 0000 xx 00 Результат: нулей 4 первая позиция нуля -2 последнея позиция нуля -5. |
Lapp |
Сообщение
#2
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Привет всем! Вот такая задачка, Привет и тебе! ))Ну, задачка - а дальше-то что?.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
Сообщение
#3
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
С каких пор вообще тут пошла привычка не делать ни-че-го для решения своей задачи? Такого я больше ни на одном сайте не вижу, чтобы кто-то приходил и говорил "сделайте за меня", а если такое и происходит, то тема тонет под слоем жирного ржача.
-------------------- |
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
С каких пор вообще тут пошла привычка не делать ни-че-го для решения своей задачи? Такого я больше ни на одном сайте не вижу, чтобы кто-то приходил и говорил "сделайте за меня", а если такое и происходит, то тема тонет под слоем жирного ржача. Не, ну ладно еще ниче не сделают - так еще даже и НЕ ПОПРОСЯТ РЕШИТЬ (или там помочь..) Просто скопипастил условие - и пошел отдыхать, добрый дядя все за меня сделает!Автор этой темы хоть "привет" сказал. И на том спасибо.. БЛИН!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111 -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
DarkWishmaster |
Сообщение
#5
|
Бывалый Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: 3 |
Извините конечно, но я не просто скопировал и пошёл отдыхать, и я тоже не люблю такие вещи. Я два часа думал, ну и как-бы получился алгоритм для поиска цепей, но как показать позицию первого и последнего ноля так и не нашёл. Я в 10 классе. процедуры мы вообще не учим, я самостоятельно по книге учусь и на 11 класс, поэтому и несколько туплю.
Мне не нужно что бы вы сделали для меня програму, а подкинули идею как это можно сделать. Спасибо за внимание. |
мисс_граффити |
Сообщение
#6
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
Идея....
1. Считаем, что и начало, и конец максимальной последовательности - 0 элемент (если в массиве нумерация с 1) 2. Идем по массиву. Если встретили 0, ставим флажок в значение "истина"; запоминаем положение начала цепочки. 3. Пока флажок в истине, идем по массиву в поиске первого НЕнулевого элемента (или конца массива). Как только нашли - сбрасываем флажок, запоминаем конец последовательности. Сравниваем длину текущей последовательности с длиной максимальной. Если у текущей больше, меняем значения начала и конца для максимальной. Кода не будет, пока ты САМ не приложишь хоть какие-то усилия к решению. З.Ы. 10 класс - это вполне взрослые люди, способные отвечать за свои поступки. ИМХО. Сообщение отредактировано: мисс_граффити - -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
DarkWishmaster |
Сообщение
#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);о во ну тут по поиску цепи более менее мне понятно, но как найти позицию в векторе первого и последнего нуля. |
Lapp |
Сообщение
#8
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
2 мисс_граффити:
флажок тут совершенно лишний.. Признаком того, что найдена последовательность, может являться само отличие ее длины от нуля. Но и это тоже лишнее , потому что можно считать что мы ВСЕГДА внутри последовательности нулей (может быть, нулевой длины)), то есть поиск ее вообще отпадает. И последнее: запоминать и начало, и конец - тоже слишком много чести, когда есть длина . 2 DarkWishmaster: если что непонятно - спрашивай.. const -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
DarkWishmaster |
Сообщение
#9
|
Бывалый Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: 3 |
Ого спасибо огромное!
1)random(3) он заполняет вектор числами 0,1,2 -> вопрос, можно ли например заполнить тоже по 3 только в другом диапазоне -6,7,9. Или вообще задавать числа? И ещё вопрос, какую функцию выполняеть Randomize? потому что если его удалить то никаких изменений. Дальше всё понятно, спасибо. Такое страное ощущения когда думаешь и не получаеться что-то сделать а потом видешь как это просто ) Сообщение отредактировано: DarkWishmaster - |
TarasBer |
Сообщение
#10
|
Злостный любитель Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: 62 |
Ну, например, random(10) выдаёт число от 0 до 9.
А вот random(17)-3 выдаёт число от -3 до 13 randomize нужен для того, чтобы числа не повторялись одни и те же при каждом запуске программы (он инициализирует генератор случайных чисел текущим временем). -------------------- |
DarkWishmaster |
Сообщение
#11
|
Бывалый Группа: Пользователи Сообщений: 168 Пол: Мужской Репутация: 3 |
Спасибо всем!
Теперь наверно тему можно закрыть. |
мисс_граффити |
Сообщение
#12
|
просто человек Группа: Пользователи Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: 55 |
1) в другом диапазоне можно, но он должен быть непрерывный. например -6,-7,-8. или 7,8,9. то есть подряд числа чтобы шли. конечно, при желании можно и -6,7,9 получить, но это надо будет уже писать свою обработку результатов.
2) инициализирует генератор случайных чисел. грубо говоря, чтобы при каждом новом запуске массив получался свой, а не всегда одинаковые. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Текстовая версия | 28.03.2024 18:28 |