![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#21
|
Гость ![]() |
А что будет делать этот цикл, расскажешь? Чего ты добиться хочешь?
|
*оля* |
![]()
Сообщение
#22
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
А что будет делать этот цикл, расскажешь? Чего ты добиться хочешь? хочу найти наибольшую подстроку в 2х списках - и удалить ее. в полученных списках снова найти наибольшую подстроку - и снова удалить. и так до тех пор, пока наибольшая подстрока не будет меньше или равна 10. а все это для того, чтобы потом получить значение суммы всех найденных kmax. вот как-то так) Сообщение отредактировано: *оля* - 24.05.2010 20:01 |
volvo |
![]()
Сообщение
#23
|
Гость ![]() |
Ну, так и будет, если не ошибаюсь:
sum := 0;
repeat
kmax : = { тут находишь kmax }
if kmax > 10 then begin
sum := sum + kmax;
{ Что там тебе еще надо было? Удалять подпоследовательности? Удаляем здесь }
end;
until kmax <= 10; { Как только kmax станет меньше 11, цикл закончится }
А что, не работает? Или что-то неправильно делает? |
*оля* |
![]()
Сообщение
#24
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
Ну, так и будет, если не ошибаюсь: sum := 0;
repeat
kmax : = { тут находишь kmax }
if kmax > 10 then begin
sum := sum + kmax;
{ Что там тебе еще надо было? Удалять подпоследовательности? Удаляем здесь }
end;
until kmax <= 10; { Как только kmax станет меньше 11, цикл закончится }
А что, не работает? Или что-то неправильно делает? ну вот без цикла делает все как надо, а как пишу цикл, то выдает ошибку: Ошибка: попытка разыменовать нулевой указатель А почему выдает не понятно... |
volvo |
![]()
Сообщение
#25
|
Гость ![]() |
Полный код (в виде PAS-файла) присоедини, посмотрим почему ошибка возникает...
|
*оля* |
![]()
Сообщение
#26
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
Полный код (в виде PAS-файла) присоедини, посмотрим почему ошибка возникает... правда с оформлением проблемы, не умею я пока оформлять( Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#27
|
Гость ![]() |
*оля*, а причина - тривиальна, и Андрей уже говорил о ней: обнулить kmax надо. Если б ты это сделала в программе, то при оборачивании куска программы циклом, задумалась бы, а не надо ли инициализацию переменной делать внутри цикла. А так - нет и нет ее, и ничего не приходит в голову... Все просто:
{ Вот начало твоего цикла }
sum := 0;
repeat
kmax := 0; { <--- Фокус вот в этом !!! }
p := L.first;
{ ... }
Добавляешь инициализацию и все работает. Теперь - почему это НЕ работало без обнуления переменной... Хотя нет. Давай, не я расскажу тебе, почему это не работало, а ты разберешься и расскажешь? Договорились? Добавлено через 7 мин. P.S. Если тебе надо удалять подпоследовательность из обоих списков - я бы вынес этот код в отдельную процедуру и вызывал бы ее дважды с разными параметрами. Так будет лучше. |
*оля* |
![]()
Сообщение
#28
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
Добавляешь инициализацию и все работает. да, действительно работает!) Теперь - почему это НЕ работало без обнуления переменной... Хотя нет. Давай, не я расскажу тебе, почему это не работало, а ты разберешься и расскажешь? Договорились? ![]() Ну вот, наверное, так) Спасибо большое, я эту ошибку без вашей помощи не нашла бы!) |
Lapp |
![]()
Сообщение
#29
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Спасибо большое, я эту ошибку без вашей помощи не нашла бы!) А между тем, на нее было указано еще в посте №13.. Ты читаешь ответы полностью или так - по диагонали? постарайся обращать внимание на то, что говорят - сэкономишь как свое время, так и чужое..Обнаружить ошибку подобного рода на самом деле предельно просто - достаточно наконец обратить внимание на то, что пытается тебе сказать компилятор (warning'и). Считай его в некотором роде участником форума.. )) А, вообще, общее правило таково: ВСЕ переменные должны быть инициированы. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
*оля* |
![]()
Сообщение
#30
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
А между тем, на нее было указано еще в посте №13.. Ты читаешь ответы полностью или так - по диагонали? 3. ВСЕ переменные перед использованием должны быть инициированы (у тебя не инициированы k и kmax). Да, вы уже говорили об этом, я все внимательно читаю. Я сделала инициализацию,но не там, где надо. Программа работала, а как появилась необходимость немного изменить задачу, то уже забыла об этом. А, вообще, общее правило таково: ВСЕ переменные должны быть инициированы. спасибо, теперь я о нем точно не забуду) постарайся обращать внимание на то, что говорят - сэкономишь как свое время, так и чужое. прошу прощения за невнимательность... |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 8:52 |