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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2012, 21:59   #1
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию Не запускается программа

При запуске вылетает
Код:
type
  List=^Node;
  Node=record
         inf:Integer;
         flag:Boolean;
         next:List;
       end;

procedure list_Push(var l: List; x: Integer); 
var
  p: List;
begin
  new(p);
  p^.inf:=x;
  p^.flag:=false;
  p^.next:=l;
  l := p;
end;

function list_Pop(var l: List): Integer; {Âûòàñêèâàåì èç ñïèñêè}
var
  p:List;
begin
  p:= l;
  l:= l^.next;
  list_Pop:=p^.inf;
  p^.next:=nil;
  dispose(p);
end;

function read_List(fName:string):List;  
var
  l:List;
  f:Text;
  x:Integer;
begin
  assign(f,fName);
  reset(f);
  l:=nil;
  while not eof(f) do
  begin
    read(f,x);
    list_Push(l,x);
  end;
  closeFile(f);
  read_List:=l;
end;

function Kolvo(l:list;v:integer):integer; 
begin Result:=0;
 while (l<>nil) do
   begin
     if(l^.inf=v) then
       Result:=Result+1;
     l:=l^.next;
   end;
end;

function Re_List(l1,l2:List):List;  
var
  h,l,d:List;
begin
 h:=nil;
 {l:=nil;}
 while d<>nil do
   begin
     if (Kolvo(l2,l1^.inf)=0) and (Kolvo(l1,l1^.inf)=1) then
       begin
         new(l);
         l^.inf:=l1^.inf;
         if h<>nil then
           h^.next:=l
         else
           h:=l;
        if Result=nil then
          Result:=h;
       end;
   end;
end;
var
  l1,l2:List;
begin
  l1:=read_List('input1.txt');
  l2:=read_List('input2.txt');
  Re_List(l1,l2);
  while l1<>nil do
    list_Pop(l1);
  while l2 <> nil do
    list_Pop(l2);
end.
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 27.12.2012, 22:17   #2
studen
Пользователь
 
Регистрация: 21.05.2012
Сообщений: 88
По умолчанию

Давно в делфи не писал, но возможно, надо писать AssignFile вместо Assign. Можно поподробнее про ошибку? Компилятор ее выдает или же она Runtime, т.е. во времени выполнения программы? В первом случае смотрите строку с ошибкой и текст самой ошибки, во втором - поставьте на каждой строке точки останова и ищите место ошибки прямо во время выполнения программы. Ну и пишите сюда все об этой ошибке.
studen вне форума Ответить с цитированием
Старый 27.12.2012, 22:21   #3
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

Ошибка такая [Warning] Project3.dpr(74): Variable 'd' might not have been initialized. Какое-то d не инициализировано? Я правильно поняла?
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 27.12.2012, 22:23   #4
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

мне кажется, дело в этом:
reset(f); - открывает существующий файл, а файл у вас, по всей видимости, не создан. Чтобы создать файл, нужно rewrite использовать. Перед тем, как считывать инфу из файла, нужно подготовить этот файл(создать, записать инфу), а в вашей проге вы сразу считываете.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 27.12.2012 в 22:27.
kventin_zhuk вне форума Ответить с цитированием
Старый 27.12.2012, 22:25   #5
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

То же самое выдает+ выделил строку: while not eof(f) do
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 27.12.2012, 22:49   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Ошибка такая [Warning] Project3.dpr(74): Variable 'd' might not have been initialized. Какое-то d не инициализировано? Я правильно поняла?
Предупреждение (файл Project3.dpr, строка 74): может получиться так, что переменная d окажется не инициализированной.
Что-то странное, ибо единственное место, где в коде встречается d - это строка 65:
Код:
 while d<>nil do
Гм. Если это единственное место, то d не меняется в цикле. Он либо не отработает ни разу, либо окажется бесконечным.

Вообще, "не запускается" и "при запуске вылетает" - вещи немного разные. Если программа запускается, то используйте отладчик либо отладочную печать для выявления точки падения. Лично мне подозрительно разыменование указателя l1 в Re_list: если он nil, программа рухнет.
Abstraction вне форума Ответить с цитированием
Старый 27.12.2012, 23:01   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ошибка такая [Warning]
Warning это не ошибка.
Цитата:
То же самое выдает+ выделил строку: while not eof(f) do
Что пишет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2012, 23:09   #8
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

Ладно, спасибо всем=) потом с ней разберусь=)
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 27.12.2012, 23:40   #9
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

А что разбираться? Предупредило об возможной проблеме. Программа и должна вылетать - пишет-то в файл. И сразу закрывается. Я не вникал, может и в логике проблемы, но это другой вопрос. Проверьте наличие входного файла и все ок. Потом проверьте результат в оутпуте.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Старый 27.12.2012, 23:43   #10
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

А предупреждает о том, что переменная d может быть неопределенной. И тогда цикл будет вечным.
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не запускается программа! deftones Софт 11 24.02.2012 19:35
Не запускается программа (Нафаня) Помощь студентам 4 27.12.2011 06:29
Не запускается программа((( katerina2508 Паскаль, Turbo Pascal, PascalABC.NET 4 23.06.2010 13:45
Программа не запускается по F9 sid957 Общие вопросы Delphi 7 12.03.2009 20:28