|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.01.2012, 17:05 | #1 |
Новичок
Джуниор
Регистрация: 02.01.2012
Сообщений: 1
|
Проблема с взаимодействием динамической и статической памяти - обращение к статической переменной
Здравствуйте!
Помогите решить проблему! Задача такая: написать сортировку бинарным деревом, так что бы данные читались из текстового файла. В текстовом файле: "<имя> <число>" и таких строчек неограниченное количество (собственно поэтому и нужно бинарное дерево). Программа у меня написана, но есть проблема с чтением из файла. Я не знаю как обратится из динамической памяти к статической переменной. Собственно, вот исходник (код): [PASCAL] type pointer=^pokupka; pokupka= record nazv:string; cena:integer; leftointer; rightointer; end; var root,tempointer; c:char; m:integer; input,output:text; i,code: integer; s: string; procedure vvod(root,tempointer); {здесь идет сортировка деревом} begin if ((root^.cena>=temp^.cena) and (root^.left<>nil)) then vvod(root^.left,temp); if ((root^.cena>=temp^.cena) and (root^.left=nil)) then root^.left:=temp; if ((root^.cena<temp^.cena) and (root^.right<>nil)) then vvod(root^.right,temp); if ((root^.cena<temp^.cena) and (root^.right=nil)) then root^.right:=temp; end; procedure vuvod(rootointer); {здесь вывод дерева} begin if root^.left<>nil then vuvod(root^.left); writeln(root^.nazv,' ',root^.cena); if root^.right<>nil then vuvod(root^.right); end; begin new(root); root:=nil; i:=0; assign(input,'nput.txt'); assign(output,'output.txt'); reset(input); rewrite(output); while not eof(input) do begin repeat read(input,c); if c<>' ' then s:=s+c; until c=' '; temp^.nazv:=@s; {//////////проблема начинается здесь////////} read(input,m); temp^.cena:=m; new(temp); temp^.left:=nil; temp^.right:=nil; if root=nil then root:=temp else vvod(root, temp); end; vuvod(root); end. [/PASCAL] Последний раз редактировалось Comst95; 02.01.2012 в 18:33. |
03.01.2012, 18:46 | #2 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,311
|
1. Наверное не следует переопределять резервные слова.
Pointer - безтиповой указатель. Код:
2. В том месте где идёт присвоение строки следует указать саму строку, а не адрес, с которого она начинается, поскольку поле nazv имеет тип string. Код:
Как-то так, ...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Подключение статической библиотеки к C# | К_І | C# (си шарп) | 2 | 11.11.2011 15:41 |
адрес статической переменной | EUGY | Общие вопросы C/C++ | 10 | 16.08.2011 23:14 |
Кольцевая очередь на массиве в статической памяти с элементами в динамической памяти | ]tach[ | Общие вопросы C/C++ | 1 | 19.01.2011 13:16 |
Списки в статической памяти. | *Натали* | Помощь студентам | 5 | 14.04.2010 11:48 |
объем статической памяти | Juffin | Общие вопросы Delphi | 1 | 10.11.2009 16:07 |