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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.04.2012, 13:33   #1
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию указатели

всех с праздником!!! буду признателен если подскажите где мне можно будет найти(если я не в той теме) помощь в решение самой что ни на есть тривиальной задачки. но я себе всю голову сломал с этими указателями... ну вообщем задачка в том чтобы из списка удалить первые значения = 0. вот код. вся проблема в функции DeleteFirst не пойму как она должна выглядеть((( заранее благодарю!!!
P.S. и может кто подскажет как кодировку поменять в borland delphi чтоб с кириллицей не было проблем.
Код:
program LW1;
{$APPTYPE CONSOLE}
uses	 SysUtils;
type
	tValue=Integer;
	pItem=^tItem;						
	tItem=record						
		Value: tValue;				
		Next : pItem;					
	end;		
procedure Create(var List: pItem);	
begin
	List:=nil;
end;	
procedure InsertFirst(var List: pItem; v: tValue);
var NewItem: pItem;			
begin
	New(NewItem);					
	NewItem^.Value:=v;		
	NewItem^.Next:=List;		
	List:=NewItem;
end;	
procedure InsertLast(var List: pItem; v: tValue);
var	NewItem, LastItem:pItem;
begin
	New(NewItem);	
	NewItem^.Value:=v;			
	NewItem^.Next:=nil;			
	if List=nil				
	then List:=NewItem			
	else begin			
		LastItem:=List;	
		while LastItem^.Next<>nil do begin
			LastItem:=LastItem^.Next;
		end;
		LastItem^.Next:=NewItem;		
	end;
end;	
procedure WriteList(var f: Text; List: pItem);	
var Item:pItem;	
begin
	Item:=List;
	while Item<>nil do begin	
		Write(f, Item^.Value:5); Item:=Item^.Next;
	end;
	Writeln(f);
end;		
function Size(List: pItem): Word;
var Item:pItem;			
begin
	Item:=List;				
	Result:=0;				
	while Item<>nil do begin	
		Item:=Item^.Next; Inc(Result);
	end;		
end;
procedure Clear(var List: pItem);
var Item: pItem;					
begin
	while List<>nil do begin		
		Item:=List;					
		List:=List^.Next;				
		Dispose(Item);				
	end;		
end;		
function FirstValue(L:pItem):tValue;
begin
  if L<>nil 
  then Result:=L^.Value
  else begin          
    Writeln('Ñïèñîê ïóñò. Äëÿ ïðîäîëæåíèÿ íàæìèòå ENTER');
    Readln;
    Halt;
  end;
end;
function DeleteFirst(L:pItem):pItem;
var	DisItem: tValue;
begin
repeat
DisItem:=FirstValue(L);
 	if DisItem=0							
	then begin



  end;
  until (DisItem<>0) or(L=nil);
  end;

var
	fDat1, fDat2, fDat3, fRes:Text;	
	L1, L2, L3:pItem;				
	v: tValue;							
begin
	Assign(fDat1,'LW3Dat1.txt'); Reset(fDat1);
  Assign(fDat2,'LW3Dat2.txt'); Reset(fDat2);	
  Assign(fDat3,'LW3Dat3.txt'); Reset(fDat3);	
	Assign(fRes,'LW3Res.txt'); Rewrite(fRes);	
	Create(L1); Create(L2); Create(L3);	
	while not EOF(fDat1) do begin
		Read(fDat1, v);					
		InsertFirst(L1, v);			 	
	end;	
  while not EOF(fDat2) do begin
		Read(fDat2, v);						
		InsertFirst(L2, v);			
	end;	
  while not EOF(fDat3) do begin
		Read(fDat3, v);			
		InsertFirst(L3, v);			
	end;	
 L1:=DeleteFirst(L1);
	Writeln(fRes, 'Èñõîäíûé ñïèñîê:'); WriteList(fRes, L1);	
                                     WriteList(fRes, L2);	
                                     WriteList(fRes, L3);	
	Writeln(fRes, '×èñëî ýëåìåíòîâ ñïèñêà: ', Size(L1));		
  Writeln(fRes, '×èñëî ýëåìåíòîâ ñïèñêà: ', Size(L2));		
  Writeln(fRes, '×èñëî ýëåìåíòîâ ñïèñêà: ', Size(L3));		

 //Clear(L1);Clear(L2);Clear(L3); 												
// Close(fDat1);Close(fDat2);Close(fDat3);Close(fRes);														
end.
renzo111 вне форума
Старый 15.04.2012, 18:15   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Зачем изобретать велосипед? Есть такой класс TList. Постройте на его основе свой класс-надстройку, реализующий весь написанный вами функционал.
У TList есть все необходимые методы: Add, Insert, Delete, IndexOf, Clear.
"ковыряю изнутри" (с)
3D Hunter вне форума
Старый 16.04.2012, 10:13   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
P.S. и может кто подскажет как кодировку поменять в borland delphi чтоб с кириллицей не было проблем.
перед копированием в буфер ВКЛЮЧИТЕ РУССКУЮ раскладку клавиатуры, должно помочь.

Цитата:
Сообщение от 3D Hunter
Зачем изобретать велосипед? Есть такой класс TList.
3D Hunter, боюсь, что это у него учебная задача на работу с указателями, поэтому использовати TList банально не примут!
Serge_Bliznykov вне форума
Старый 16.04.2012, 11:29   #4
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию

Serge_Bliznykov, спасибо переключение раскладки помогло. а можно узнать почему?
и это правда учебная задачка и перевод этого в объектный вид одно из след заданий, а пока я не понимаю как должна выглядеть подпрограмма deletefirst...
renzo111 вне форума
Старый 16.04.2012, 14:50   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а можно узнать почему?
Ты же через Clipboard текст копировал? А он зависит от активной раскладки.
I'm learning to live...
Stilet вне форума
Старый 16.04.2012, 18:49   #6
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию

да спасибо за разъяснение с буфером обмена. основная проблема это вот подпрограмма DeleteFirst
renzo111 вне форума
Старый 21.04.2012, 01:14   #7
renzo111
 
Регистрация: 10.01.2012
Сообщений: 6
По умолчанию

спасибо всем огромное тема закрыта!
renzo111 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указатели Анютик_sexi Помощь студентам 3 16.06.2010 14:38
Указатели Анютик_sexi Помощь студентам 8 16.06.2010 13:56
Указатели papochka Общие вопросы C/C++ 2 14.11.2009 22:06
Указатели Mighty Помощь студентам 1 24.10.2009 18:01
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39