![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Aleks |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здраствуйте
Прошу помощи в решение задачи: Подсчитать число вершин на n-ом уровне непустого дерева Т (корень считать вершиной нулевого дерева) я в этом плохо разбираюсь, но кое-что написал Исходный код uses crt; type pitem=^titem; titem=record data:string; pred:pitem; next:pitem; end; var first,last:pitem; ff:text; ss:string; i:integer; procedure add(ss:string); var newitem:pitem; d:string; begin for i:=1 to length(ss) do begin d:=ss[1+length(ss)-i]; new(newitem); newitem^.data:=d; newitem^.pred:=nil; newitem^.next:=first; first:=newitem; if last=nil then last:=newitem; end; end; procedure print; begin end; procedure del; var delitem:pitem; begin delitem:=first; if delitem<>nil then begin first:=delitem^.next; delitem^.Pred^.Next:=delitem^.Next; dispose(delitem); end; end; begin { clrscr; } writeln('--' , memavail); assign(ff,'E:\derevo.txt'); reset(ff); while not (eof(ff)) do begin readln(ff,ss); writeln(ss); end; add(ss); del; close(ff); writeln('--' , memavail); readln; end. |
![]() ![]() |
Aleks |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
проверьте правильно сделал или нет
Исходный код uses crt; type ttype=record n:integer; count:integer; end; TTree=^TNode; TNode=Record data:TType; Left, Right:TTree; end; var t:TTree; ff:text; d,ss:string; i:integer; procedure add(var T: TTRee; i:Integer); procedure CreateNode(var p:TTRee; n:integer); begin new(p); p^.Data.n:=n; p^.Data.Count:=1; p^.Left:=nil; p^.Right:=nil; end; begin if t<>nil then with t^ do begin if Data.n<i then Add(Right,i) else if Data.n>i then Add(Left,i) else Inc(Data.Count) end else CreateNode(T,i); end; procedure Delete(T: TTRee); begin if T=nil then Exit; delete(T^.Right); delete(T^.left); dispose(t); end; begin writeln('--' , memavail); assign(ff,'E:\derevo.txt'); reset(ff); while not (eof(ff)) do begin readln(ff,ss); {writeln(ss);} end; for i:=1 to length(ss) do begin d:=ss[1+length(ss)-i]; add(T,1); end; delete(t); close(ff); writeln('--' , memavail); readln; end. вопрос: по процедуре add, я хотел бы понять ее действие Код if t<>nil then with t^ do begin if Data.n<i then Add(Right,i) else if Data.n>i then Add(Left,i) else Inc(Data.Count) end else CreateNode(T,i); |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 16:31 |