![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
volvo |
![]()
Сообщение
#21
|
Гость ![]() |
А что будет делать этот цикл, расскажешь? Чего ты добиться хочешь?
|
*оля* |
![]()
Сообщение
#22
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 125 Пол: Женский Репутация: ![]() ![]() ![]() |
А что будет делать этот цикл, расскажешь? Чего ты добиться хочешь? хочу найти наибольшую подстроку в 2х списках - и удалить ее. в полученных списках снова найти наибольшую подстроку - и снова удалить. и так до тех пор, пока наибольшая подстрока не будет меньше или равна 10. а все это для того, чтобы потом получить значение суммы всех найденных kmax. вот как-то так) Сообщение отредактировано: *оля* - |
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). Да, вы уже говорили об этом, я все внимательно читаю. Я сделала инициализацию,но не там, где надо. Программа работала, а как появилась необходимость немного изменить задачу, то уже забыла об этом. А, вообще, общее правило таково: ВСЕ переменные должны быть инициированы. спасибо, теперь я о нем точно не забуду) постарайся обращать внимание на то, что говорят - сэкономишь как свое время, так и чужое. прошу прощения за невнимательность... |
![]() ![]() |
![]() |
Текстовая версия | 22.04.2025 5:57 |