Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2008, 20:13   #1
Executr
 
Регистрация: 31.10.2007
Сообщений: 7
Плохо Пустой список

Помогите с написанием программы
Имеется список, элементами которого являются вещественные числа. Создать консольное приложение, описывающее подпрограмму, которая определяет является ли список пустым(все ссылки пустые).
Сам список я задал, не получается сама функция работы с пустым списком.
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
pitem=^item;
item=record
data: real;
prev: pitem;
end;

var
top, p: pitem;
k, buf, res: real;
n,i: byte;
min:integer;

procedure add(x:real);
begin
new(p);
p^.data:=x;
p^.prev:=top;
top:=p;
end;

procedure WriteStack;

begin
writeln('soderzimoe steka nachinja s vershini: ');
p:=top;
while p<> nil do
begin
write(p^.data:2:1,' ');
p:=p.prev;
end;
writeln;
end;

function IsNULL(p:pitem):boolean;
begin
{if p <> nil then
Result:=false
else Result:=true; }


end;

begin
randomize;
writeln('VVedite dlinu spiska');
readln(n);
top:=nil;
{ if n <> 0 then
begin}
For i:=1 to n do
begin
k:=random(6)-2;
add(k);
end;
end;
WriteStack;
writeln;
if IsNULL(top) then writeln('is null')
else writeln('not is null');
writeln;
WriteStack;
readln;
end.
Executr вне форума Ответить с цитированием
Старый 02.06.2008, 20:20   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Executr Посмотреть сообщение
Помогите с написанием программы
Имеется список, элементами которого являются вещественные числа. Создать консольное приложение, описывающее подпрограмму, которая определяет является ли список пустым(все ссылки пустые).
Сам список я задал, не получается сама функция работы с пустым списком.
Какие все ?
Список пуст, если его голова ни на что не указывает.
По-моему у Вас правильно написано:

Код:
function IsNULL(p:pitem):boolean;   
begin  
   result := p = nil;
end;
alexBlack вне форума Ответить с цитированием
Старый 02.06.2008, 20:22   #3
Executr
 
Регистрация: 31.10.2007
Сообщений: 7
По умолчанию

Нужно чтобы было так: Если в списке присутствует хотябы один элемент "0", то выдается соответствующее сообщение.
Executr вне форума Ответить с цитированием
Старый 02.06.2008, 20:31   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Executr Посмотреть сообщение
Нужно чтобы было так: Если в списке присутствует хотябы один элемент "0", то выдается соответствующее сообщение.
Тогда Вы не о том спрашивали.
Проход по списку и сравнение с нулем:

Код:
function IsNULL(p:pitem):boolean;
begin
   result := false;
   while p <> nil do begin
      if abs(p.data) < 1e-7 then begin
         result := true;
         break;
      end;
      p := p^.prev;
   end;
end;
alexBlack вне форума Ответить с цитированием
Старый 02.06.2008, 20:46   #5
Executr
 
Регистрация: 31.10.2007
Сообщений: 7
По умолчанию

alexBlack

Огромное Спасибо, все правильно выводит.
Не пойму только вот эти строчки, какие их функции?
1e-7

Код:

   while p <> nil do begin
      if abs(p.data) < 1e-7 then begin
Executr вне форума Ответить с цитированием
Старый 02.06.2008, 20:55   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Executr Посмотреть сообщение
Не пойму только вот эти строчки, какие их функции?
1e-7
Код:

   while p <> nil do begin
      if abs(p.data) < 1e-7 then begin
while p <> nil do begin
Цикл пока указатель на эл-т <> nil. Там ниже переход на следующий компонент списка p:=p^.prev

if abs(p.data) < 1e-7 then begin
Если абсолютное значение элемента меньше 1 на 10 в -7 степени.
Это сравнение с нулем. То есть попросту - если элемент равен нулю.
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43
Удалить не пустой каталого Иллидан Общие вопросы Delphi 14 19.05.2008 08:55
запрет на ввод пустой записи ГОСЕАН БД в Delphi 10 08.03.2008 03:48
Проверка пустой католог или нет! Pashekka Общие вопросы Delphi 10 27.09.2007 01:21