Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дан файл, состоящий из чисел [D6, XP]


Страницы:   1 2

Wildyt ©   (2008-05-31 21:53:00) 

Привет!!
Помогите мне сделать задание.  :(
----------------------------------------------------------------------------------
Задание:
Линейные динамические структуры...( работа со списками)
Дан файл, состоящий из чисел. Перевернуть его, прочитав в память..
----------------------------------------------------------------------------------
Вот что я сделал пока что - толко проблема в том  ,что числа из файла читаются 1 2 3 4 5 - тоесть как и записаны, а мне надо чтобы это числа вывелись в перевёрнутом виде. 5 4 3 2 1 .


type pList= ^TList;
 TList=record
 info :integer;
 next: pointer;
   end;

procedure TForm1.Button1Click(Sender: TObject); //  при нажатии на кнопку..
var i,a:integer;
k,otvet:string;

F:TextFile;
First,tmp: ^TList;
begin
First:= nil;
   AssignFile(F,'data.txt');
   Reset(F);
   While not EOF(F) do
       begin
         Read(F,a);
         new (tmp);
         tmp^.info:=a;
         tmp^.next:=First;

while  tmp<> nil do
    begin
     Memo1.Lines.Add(IntToStr(tmp^.info));
     tmp:=tmp^.next;
end;

 end;
   CloseFile(F);
 end;


читаю книги,не достаточно инфы, помогите пожалуйста!!!
Зарание спасибо!


Германн   (2008-06-01 01:31:00) [1]

Удалено модератором


Умища   (2008-06-01 01:06:00) [2]

Удалено модератором


Германн   (2008-06-01 00:52:00) [3]


> {RASkov} ©   (31.05.08 22:52) [20]
>
> > У него вообще ерунда написана tmp^.next:=First;
>
> Хм.... Точно, а я даже и не смотрел код.... А ведь он говорил,
>  что все работает, осталось только "перевернуть".... Заврался
> :))
>

+1


Wildyt   (2008-06-01 00:44:00) [4]

sniknik  СПАСИБО!


sniknik   (2008-05-31 22:52:00) [5]

ошибка... нужно не только pred:= nil; в начале делать но и point:= nil; на случай пустого файла.


{RASkov}   (2008-05-31 22:52:00) [6]

> У него вообще ерунда написана tmp^.next:=First;

Хм.... Точно, а я даже и не смотрел код.... А ведь он говорил, что все работает, осталось только "перевернуть".... Заврался :))


sniknik   (2008-05-31 22:49:00) [7]

procedure TForm1.Button1Click(Sender: TObject); //  при нажатии на кнопку..
type
 PList = ^TList;
 TList = record
   info: integer;
   pred: pointer;
 end;

var
 F: TextFile;
 pred, point: PList;
 a: integer;
begin
 AssignFile(F, 'data.txt');
 Reset(F);

 pred:= nil;
 while not Eof(F) do begin
   Read(F, a);
   new(point);
   point.info:= a;
   point.pred:= pred;
   pred:= point;
 end;

 CloseFile(F);

 while point <> nil do begin
   Memo1.Lines.Add(IntToStr(point.info));
   pred:= point;
   point:= point.pred;
   Dispose(pred);
 end;
end;


Anatoly Podgoretsky   (2008-05-31 22:49:00) [8]

Автот твоя задачка решается просто, она из области подготовительных курсов, надо просто сеть и на бумажке выполнить задачу, потом алгоритм перенести в электронную форму. Вариат взять готовый код из Сети я не рассматриваю, ты же учиться пошел за знаниями, а не за бумажками, бумажку можно купить в переходе метро и если кто то тебе приведет этот элементарнейший код, то он окажет тебе медвежью услугу. Если же нужна бумажка, то вывеси объявление в ВУЗЕ с указанием вознаграждения. А то есть много умных людей, а денег у них нет.


sniknik   (2008-05-31 22:44:00) [9]

> Тебе в [2] решение написали :)))
препод не зачтет, к чему там получаются динамические структуры?...

---------------
пособие начинающему хакеру.
берете ноутбук и фомку, ищете банкомат, "хакаете" фомкой банкомат и "смываетесь". не забудьте  ноутбук. вот тут нас спрашивают а зачем вообще ноутбук... ну а какой же вы тогда хакер без ноутбука?


Anatoly Podgoretsky   (2008-05-31 22:41:00) [10]


> Ничего не меняя можно заменить Lines.Add на Lines.Insert(0,
> ...

Это ерунда, ему не в мемо нужен обратный порядок, а в списке.
Мемо только для контроля.


Anatoly Podgoretsky   (2008-05-31 22:40:00) [11]

У него вообще ерунда написана tmp^.next:=First;
А First всегда nil
И книги тоже не помогают.
Когда там в армию приглашают?


nimble_   (2008-05-31 22:35:00) [12]

Удалено модератором


{RASkov}   (2008-05-31 22:25:00) [13]

> [12] Wildyt   (31.05.08 22:21)

Ты сквозь слезы ответы не видешь?) Или и ты безнадежен? :)


Wildyt   (2008-05-31 22:21:00) [14]

Знаю считать с файла.. это ерунда.
А занести в спис ок.. потом считать..
помогите написать мне ((пожалуйста.


Wildyt   (2008-05-31 22:20:00) [15]

еййй..
это просто счатать с файла..
я делал сначало обык способом. вот.
begin
     AssignFile(F,'data.txt');
     Reset(F);
     ReadLn(F,k);
For i:=Length(k) downto 1 do
       begin
       otvet:=otvet+k[i];

            end;
            ShowMessage(otvet);
       end;

а через список я пытаюь не выходит ((((((


{RASkov}   (2008-05-31 22:18:00) [16]

> [9] Wildyt   (31.05.08 22:16)

Тебе ответа в [2] недостаточно?


Wildyt   (2008-05-31 22:16:00) [17]

мм..  сделал бы.. если бы не эти спискии (((
помогите написать..
знаю для Вас это ерунда..


{RASkov}   (2008-05-31 22:12:00) [18]

procedure TForm1.Button1Click(Sender: TObject); //  при нажатии на кнопку..
var otvet: string;
   F: TextFile;
begin
 AssignFile(F,'data.txt');
 Reset(F);
 try
  While not EOF(F) do begin
   ReadLn(F, otvet);
   Memo1.Lines.Insert(0, otvet);
  end;
 finally
  CloseFile(F);
 end;
end;


Wildyt   (2008-05-31 22:09:00) [19]

Значет нужно каждую цифру заганять..
а как это сделать?????
искал в инете литературу не нашёл... (


Kolan   (2008-05-31 22:06:00) [20]

Имхо, это будет работать неверно.
1. Зачем ты выводишь при считывании каждой строки? По сути ты тут не используешь связный список. Ты тупо перекладываешь туду данные.
Твой код эквивалентен
var
 i,a:integer;
 k,otvet:string;
 F:TextFile;
 First,tmp: ^TList;
begin
 First:= nil;
 AssignFile(F,'E:\12345.txt');
 Reset(F);
 while not EOF(F) do
 begin
   Read(F,a);
   Memo1.Lines.Add(IntToStr(a));
end;
CloseFile(F);
end;

Как видишь списка нет, а тожесамое. Твоя задача — прочесть из файла в список, а потом, уже заполненый список, пройти с зада на перёд и вывести содержимое в Memo.

Пробуй еще результаты сюда.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо