Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Паскаль] Работа со списками, Нужна помощь 
:(
    Опции темы
Jolie
Дата 21.12.2009, 23:50 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



Код

uses crt;
type
book=record
author:string[20];
book_name:string[20];
price:integer;
tirazh:integer;
end;
book_n=record
book_name_n:string[20];
price_n:integer;
tirazh_n:integer;
end;
pel=^dbook;
dbook=record
data:book;
next:pel;
end;
pel_n=^dbook_n;
dbook_n=record
data:book_n;
next:pel_n;
end;
procedure ramka1;
begin
writeln;
write('Author':20);
write('Book Name':20);
write('Tirazh':10);
writeln('Price':10);
end;
procedure ramka2;
begin
writeln;
write('Book name':20);
write('Tirazh':10);
writeln('Price':10);
end;
var root,e1,e2:pel; e3,root_n:pel_n;
c:char; seek_author:string[20];
i,j:integer;
begin
clrscr;
new(e1);
root:=e1;
repeat
write('author - ');
readln(e1^.data.author);
write('book name -');
readln(e1^.data.book_name);
write('price -');
readln(e1^.data.price);
write('tirazh -');
readln(e1^.data.tirazh);
write('continue (y/n)');
readln(c);
new(e1^.next);
e1:=e1^.next;
until upcase(c)='N';
e1:=root;               ramka1;
while e1<>nil do begin
write(e1^.data.author:20);
write(e1^.data.book_name:20);
write(e1^.data.tirazh:10);
writeln(e1^.data.price:10);
e1:=e1^.next;
end;
writeln('Enter Author');
readln(seek_author); e1:=root;
while e1<>nil do
if e1^.data.author=seek_author then begin
e3^.data.book_name_n:=e1^.data.book_name;
e3^.data.tirazh_n:=e1^.data.tirazh;
e3^.data.price_n:=e1^.data.tirazh;
e3:=e3^.next;
end;
e3:=root_n;   ramka2;
while e3<>nil do begin
write(e3^.data.book_name_n:20);
write(e3^.data.tirazh_n:10);
writeln(e3^.data.price_n:10);
end;
 end.

при выводе второго списка ничего не выводит по пречине того что он =нил.
хелп
PM MAIL   Вверх
volvo877
Дата 22.12.2009, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Jolie @  21.12.2009,  22:50 Найти цитируемый пост)
при выводе второго списка ничего не выводит по пречине того что он =нил.
До туда программа даже не дойдет. Она вылетит раньше, при попытке пройти до конца по первому списку. Потому что заполняется он неправильно.
PM MAIL   Вверх
Jolie
Дата 22.12.2009, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



cоздаю список с начала в конец.
просто  не добавляю сверху елементы, а наоборот как бы снизу.

список создается и выводится.. только что проверка подтвердила

Это сообщение отредактировал(а) Jolie - 22.12.2009, 01:22
PM MAIL   Вверх
volvo877
Дата 22.12.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Jolie @  22.12.2009,  00:17 Найти цитируемый пост)
список создается и выводится.. только что проверка подтвердила
Мне тоже подтвердила:
Цитата
author -a
book name -b
price -2
tirazh -3
continue (y/n)n

              Author           Book Name    Tirazh     Price
                   a                   b         3         2
                                                       ∩╛¡▐am Filesב ♀☺,ß♣     s        -1        -1
Exitcode = 216
Runtime error 216 at $0040759B
  $0040759B
  $00408710
Если я говорю, что список создается некорректно, значит, он создается некорректно. Если Турбо-Паскаль этого не видит и не предупреждает тебя - это чья проблема? Моя? Ну, продолжай считать, что список создается корректно, и ищи ошибку...
PM MAIL   Вверх
Jolie
Дата 28.12.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



Код

uses crt;
type
node_ptr=^book;
book=record
author:string[20];
book_name:string[20];
tirazh:integer;
price:integer;
next:node_ptr;
end;
node_ptr_n=^book_n;
book_n=record
Book_name:string[20];
tirazh:integer;
price:integer;
next:node_ptr_n;
end;
procedure ramka2;
begin
write('Book Name':20);
write('Tirazh':10);
writeln('Price':10);
end;
procedure ramka1;
begin
write('Author':20);
write('Book Name':20);
write('Tirazh':10);
writeln('Price':10);
end;
procedure create(var root:node_ptr;n:word);
var temp:node_ptr;
k:word;
begin
root:=nil;
for k:=0 to n-1 do
begin
temp:=root;
new(root);
with root^ do
begin
write('Enter author - ');
readln(author);
write('Enter Book Name - ');
readln(book_name);
write('Enter tirazh - ');
readln(tirazh);
write('Enter price - ');
readln(price);
next:=temp;
end;
end;
end;
procedure vivod(a:node_ptr);
var temp:node_ptr;
begin
temp:=a;
while temp<>nil do begin
write(temp^.author:20);
write(temp^.book_name:20);
write(temp^.tirazh:10);
writeln(temp^.price:10);
temp:=temp^.next;
end;
end;
procedure vivod2(a:node_ptr_n);
var temp:node_ptr_n;
begin
temp:=a;
while temp<>nil do begin
write(temp^.book_name:20);
write(temp^.tirazh:10);
writeln(temp^.price:10);
temp:=temp^.next;
end;
end;
procedure newmas(var a:node_ptr_n; b:node_ptr);
var root:node_ptr_n; temp:node_ptr;
s:string[20];
begin
write('Enter Seeking Author - ');
readln(s);
temp:=b;  a:=nil;
while temp<>nil do begin
if temp^.author=s then
begin
root:=a; new(a);
with a^ do begin
book_name:=temp^.book_name;
tirazh:=temp^.tirazh;
price:=temp^.price;
next:=root; temp:=temp^.next;
end; end; end; end;
procedure sort(var a:node_ptr_n);
var temp,p,q,m:node_ptr_n;s:string;
begin
p:=a;
while p<> nil do begin
q:=p; m:=q;
while q<>nil do begin
if m^.book_name<q^.book_name then m:=q; q:=q^.next; end;
s:=p^.book_name; p^.book_name:=m^.book_name; m^.book_name:=s;
p:=p^.next;
end;
end;
var
el:node_ptr;f:word; el2:node_ptr_n;
begin
clrscr;
writeln('Enter kol-vo');
readln(f);
create(el,f);writeln;ramka1;
vivod(el);writeln; newmas(el2,el);ramka2; vivod2(el2);
sort(el2);writeln; vivod2(el2);
end.



помоги разобратся почему ошибка выскакивает.
почитала литературу, но все равно чтото не выходит
сартировку не дописала, но ошибка то вылетает раньше(

Это сообщение отредактировал(а) Jolie - 28.12.2009, 16:36
PM MAIL   Вверх
Jolie
Дата 28.12.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



все работает.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0991 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.