![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
ammaximus |
![]()
Сообщение
#1
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: ![]() ![]() ![]() |
В задаче ввод из входного потока.
Ввести 2 длинные строки. программа<файл: строка1 строка2 Ну я и пишу Код {X+} var a,b:PChar; an,bn:integer; c:char; flag:boolean; begin {Intro} flag:=True; an:=0; while flag do begin read(c); If ord(c)=13 then flag:=false else a[an]:=c; inc(an); end; flag:=True; bn:=1; while flag do begin read(c); If ord(c)=13 then flag:=false else b[bn]:=c; inc(bn); end; {/Intro} writeln(a); writeln(b); readln; end. А как писать правильно? Как организовать ввод, если неизвестно кол-во символов? -------------------- Не думай о белой обезьяне.
|
![]() ![]() |
ammaximus |
![]()
Сообщение
#2
|
![]() Ночной волк ![]() ![]() Группа: Пользователи Сообщений: 103 Пол: Мужской Репутация: ![]() ![]() ![]() |
То же самое... New для указателя PChar выделяет место под один единственный символ, прничём размер выделенной области никакими стандартными средствами изменяться не будет, т. е. p[1] уже не принадлежит выделенному блоку. Он не будет принадлежать выделенному участку, но разрушать кучу это не будет. По-крайней мере я не могу создать комбинацию, при которой это происходит В рамках моей задачи такой вариант подходит, однако правильнее все-же отслеживать состояние кучи. Кроме того, Вы сделали утечку памяти, т. к. указатель, выделенный new(a) безвозвратно теряется. А он ведь больше не нужен. Мы же вводим новое значение a, а старое преобразуется в мусор. Только мусорить так, наверное, некоректно. Получается что-то вроде 10101010 10101010 11101010 10010101 мусор --> сюда особо ничего не влезет, не экономное использование памяти. 10010101 Нужно подкорректировать и поменять на функцию. Не знаю будет ли работать, стоит попробовать. -------------------- Не думай о белой обезьяне.
|
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 4:33 |