![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Clon |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот тут написал программу. Она создает деверо общего вида, добавляет к нему элементы, печатает его. Но вот главная процедура мне что-то не хочет даваться. Задача ее состоит в том, чтобы подсчитать число вершин дерева, степень которых совпадает со значением их элементов. Причем элементы типа Char. Я знаю есть такая функция ord, но как это вообще реализовать я не могу. Вот прога, помоги те если не трудно
Код program lab22(input,output); type tree = ^node; node = record inf : char; brat,son : tree; end; var t : tree; q,data,kuda,shto : char; c,i : integer; b : boolean; procedure dop(var t : tree); begin if t^.brat=nil then begin new(t^.brat); writeln('vvedi element'); readln(t^.brat^.inf); t^.brat^.brat:=nil; t^.brat^.son:=nil; end else dop(t^.brat); end; procedure sozd(var t:tree;var data:char); begin writeln('vvedite element'); readln(data); new(t); t^.inf:=data; t^.brat:=nil; t^.son:=nil; end; procedure add(var t : tree; data:char); begin if t^.inf<>kuda then begin if t^.son<>nil then add(t^.son,kuda); if t^.brat<>nil then add(t^.brat,kuda); end else begin if t^.son=nil then begin new(t^.son); write('vvedite element:'); readln(t^.son^.inf); t^.son^.son:=nil; t^.son^.brat:=nil; end else dop(t^.son); end; end; procedure dobavlenie; begin write('kuda postavit element?:'); readln(kuda); add(t,kuda); end; procedure print(t:tree; var i:integer); var j : integer; begin write('':i,t^.inf); if t^.brat<>nil then begin print(t^.brat,i); end; if t^.son<>nil then begin writeln; print(t^.son,i); end; i:=i+1; end; begin while b<>true do begin writeln(' 1 - Sozdanie'); writeln(' 2 - Dobavlenie elementa'); writeln(' 3 - Print'); writeln(' 4 - Udalenie'); writeln(' 5 - Exit'); writeln(' 6 - Active'); write('vvedite punkt menu:'); readln(c); if c=1 then sozd(t,data); if c=2 then dobavlenie; if c=3 then print(t,i); writeln; writeln('hotite prodoljit?y/n'); readln(q); if q='y' then b:=false; if q='n' then b:=true; if (q<>'y') and (q<>'n') then begin writeln('Tolko "n" ili "y"!'); readln(q); end; end; end. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 7:02 |