1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
прошу прощения,но у меня вновь возникли вопросы.. дело в том что программа не может выполнить нужные операции для n<12, если я не ошибаюсь. почему это происходит?
дело в том что программа не может выполнить нужные операции для n<12, если я не ошибаюсь. почему это происходит?
Не знаю, я проверял только при n >= 25... Попробую подставить маленькие значения - потом напишу, что происходит...
Цитата(Tribunal @ 9.04.2006 6:09)
а для чего нужно
if (p=0) then p:=pred(n);
?
А подумай, когда, собственно, p может быть равно 0? По-моему, есть только один случай, когда это может произойти - если в строке есть только одно слово, более длинное чем N... В этом случае нам надо, чтобы слово было "разрезано" по N-му символу, так? А в программе есть запись:
prev := copy(st, succ(p), 255) + ' ';
Чтобы не делать лишних If ... Then ... Else, я просто присвоил в p значение N - 1, и это удовлетворяет всем условиям...
Цитата(Tribunal @ 9.04.2006 6:09)
почему
if st<>'' then begin inc(i); s[i]:=st; end;
работает только вне цикла
while not eof(f) do .... end;
?
Ну, а это - как раз и есть тот самый "хвост", про который я сразу забыл. А "хвост" остается только после обработки всего файла, в самом конце. Вот я и проверяю это уже ПОСЛЕ цикла
Так, ну причина того, что это все не работало с N < 12 очень прозаическая - размерности массива S просто напросто не хватало для того, чтобы он мог вместить все строки Поскольку реализация идет на Дельфи - я СВОЙ код переписал с использованием динамических массивов вот так:
var s: array of string;
...
procedure TForm1.Button2Click(Sender: TObject); var i, j, p, n: integer; st, prev: string;
большое спасибо за объяснения!=) теперь всё понятно=)
я в начале этой темы приводила условие еще одной задачи. вот то,что я сделала. но там выдается ошибка о том,что чтение из файла идет после его закрытия,но я проверила этот факт. вроде всё открывается и закрывается в нужных местах... что не так?посмотрите,пожалуйста...))
volvo, а можно попросить вас словесно хотя бы кратко объяснить, как действует программа, которую вы привели , а то вроде бы всё понятно, а когда начинаю объяснять путаюсь и сама ничего не понимаю. прошу вас,объясните,а то получается так,что алгоритм понятен мне только кусками...а хотелось бы хорошо с ним разобраться