Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия, Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки
Последний раз редактировалось GAA 21.07.2020, 16:13, всего редактировалось 1 раз.
Добавлено [Pascal]
Использовать линейные списки для хранения последовательности строк. Опишите функции для решения следующей задачи: а) подсчитать количество строк-элементов списка, которые начинаются и оканчиваются одним и тем же символом. Вот мой вариант:
Program hdfhdfh; Type stroka=string[20]; link=^elem; elem=record info:stroka; next:link; end; Var p,q:link; i,n,s,l:integer; f1,f2:text; Procedure schet(p:link; Var s:integer); Var r:link; Begin r:=p; s:=0; for i:=1 to n do begin l:=length(r^.info); if r^.info[1]=r^.info[l] then s:=s+1; r:=r^.next; end; End; Begin assign(f1,'dan.dan'); assign(f2,'res.res'); reset(f1); rewrite(f2); p^.next:=nil; readln(f1,p^.info); n:=1; while not eof(f1) do begin new(q); readln(f1,q^.info); q^.next:=p; p:=q; n:=n+1; end; schet(p,s); writeln(f2,s); close(f1); close(f2); end.
Niaren
Re: Проверь пожалуйста задачу на ошибки!
24.12.2010, 22:28
ну помогите уже кто-нибудь!!!!!
Toucan
Re: Проверь пожалуйста задачу на ошибки!
24.12.2010, 22:42
!
Niaren, замечание за искусственное поднятие темы неинформативным сообщением.
Свою программу Вы вполне можете проверить сами: откомпилируйте и запустите с тестовыми данными. Если возникнут конкретные проблемы, обращайтесь.
Niaren
Re: Проверь пожалуйста задачу на ошибки!
24.12.2010, 22:44
проблемы и так конкретные. Каждый раз ответ разный выдает.
Ну и чем Вас не устраивает работа Вашей программы?
Circiter
Re: Проверь пожалуйста задачу на ошибки!
25.12.2010, 00:01
2Niaren Несколько советов. После rewrite(f2) добавьте new(p) (в этом главная ошибка).
Выбросьте все, что связано с i и n. В том числе, замените ваш for на while r do (кстати, r, тоже можно выбросить, достаточно p). Также перенесите l в локальные переменные процедуры schet.
P.S.: И все-таки не понятно как вы увидели ошибку по правильным тестам? Интуиция что-ли... :)
Niaren
Re: Проверь пожалуйста задачу на ошибки!
25.12.2010, 00:37
Спасибо за исправления! А как понимать замените ваш for на while r do? Разве программа не будет выдавать ошибку?
Circiter
Re: Проверь пожалуйста задачу на ошибки!
25.12.2010, 04:48
Да с чего бы это. Просто вы же последовательно продвигаясь по связанному списку с помощью r:=r^.next в конце-концов упретесь в next=nil (вспомните, что опри инициализации у вас было p^.next:=nil) и выполнение цикла while будет остановлено. Не, я конечно мог что-то напутать с синтаксисом, может быть там надо написать что-то вроде while r<>nil do, но суть та же. Зато можно будет удалить лишние переменные (i и n).