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

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

Помогите с задачей. [D7, XP]


Страницы:   1 2 3 4

Stasxxx ©   (2008-01-22 12:58:00) 

var
 Form1: TForm1;
 f1:textfile;
 s1,s2,m:string;
 k:longint;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,n:integer;
f2:textfile;
begin
assignFile(f1,'F:\chisla1.txt');
assignfile(f2,'F:\chisla2.txt');
{$I-}
reset(f1);
rewrite(f2);

{$I+}
if IOResult0 then
begin
Messagedlg('Îøèáêà äîñòïà ê ôàéëó',mterror,[mbok],0);
exit;
end;
While not (Eof(f1)) do
Begin
  If (Eof(f1)) Then
 begin
  messagedlg('Ôàéë ïóñò',mterror,[mbok],0);
  exit;
  end;
  ReadLn(f1,s1);

           begin
               for i:=1 To Length(s1) do
                 begin
                      n:=strtoint(s1[i]);
                      if (n mod 2)0
                       then
                       begin
                       m:=inttostr(n);
                       write(f2,m);
                       end;
                      Label1.Caption:='×èñëà â ôàéë çàïèñàíû...'+#13;

                   end;
             end;
end;
Closefile(f1);
Closefile(f2);
 assignfile(f2,'F:\chisla2.txt');
 reset(f2);
 readln(f2,s2);
 k:=length(s2);
closefile(f2);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
f:file of integer;
buf1,buf2,m:integer;
n:longint;
ok:boolean;
begin
assignfile(f,'F:\chisla2.txt');
reset(f);
repeat
ok:=true;
for n:=0 to k-2 do
begin
seek(f,n);
read(f,buf1);
read(f,buf2);
if buf1>buf2 then
begin
seek(f,0);
write(f,buf2);
write(f,buf1);
ok:=false;
end;
end;
until ok;
closefile(f);
end;
end.  

Вот код задачи, компиляция проходит, когда начинаешь сортировать, выходит ощибка, read beyond end of file, подскажите в чем проблема!


Stasxxx   (2008-01-22 13:39:00) [61]

У меня просто нет столько времени, мне сегодня еще экзамен по физике учить, и сдавать нужно эту задачу, если не сдам меня к эзамену не допустят, короче мне помощь нужна.


Плохиш   (2008-01-22 13:38:00) [62]


> Stasxxx ©   (22.01.08 13:29) [11]
> Я же говорю авторов я незнаю. Списал и отдал учебник.

И в учебнике не написано из чего состоят строки и чем integer от этих составляющих отличается?


Сергей М.   (2008-01-22 13:38:00) [63]


> Ты мне можешь код исправить?


Зачем ?

Чтобы ты не вникая сдал его преподу как свой собственный код ?


Ega23   (2008-01-22 13:35:00) [64]


> Надо вернуть позицию указателя на начало? т.е. еще рез seek


Начни со следующего:

1. Постановка задачи. Что ты хочешь сделать?
2. Исходные данные. Какие входные-выходные параметры должны быть у твоей программы.
3. Выбор модели. Какие технологии, алгоритмы, средства разработки ты собираешься использовать.
4. Реализация задачи. Подробное описание реализации, блок-схемы и т.п.
5. Тестирование. Тестирование возможных "подводных камней".

Смею тебя уверить, если ты будешь использовать такой метод разработки, то 95% вопросов у тебя отпадут сами-собой.

А "списал и отдал учебник" - это просто несерьёзно.


Stasxxx   (2008-01-22 13:35:00) [65]

А почему она тогда в консоли работает? Ты мне можешь код исправить? У меня не получается ничего!Я еще слаб в программировании.


Сергей М.   (2008-01-22 13:33:00) [66]

Списал-то зачем ?
Почему бы самому "с нуля" не попытаться ?


Stasxxx   (2008-01-22 13:29:00) [67]

Я же говорю авторов я незнаю. Списал и отдал учебник. Надо вернуть позицию указателя на начало? т.е. еще рез seek прописать?


Ega23   (2008-01-22 13:25:00) [68]

assignfile(f,'F:\chisla2.txt');
reset(f);
repeat
ok:=true;
for n:=0 to k-2 do
begin
seek(f,n);
read(f,buf1);
read(f,buf2);
if buf1>buf2 then
begin
seek(f,0);
write(f,buf2);
write(f,buf1);
ok:=false;
end;
end;
until ok;
closefile(f);


До сюда не досмотрел, но и не мудрено, что ошибка выскакивает.
Тебе не приходило в голову, что при втором чтении f ты уже вываливаешься за пределы файла?


Сергей М.   (2008-01-22 13:24:00) [69]


> с учебника списал


Тебя и спрашивают - с какого ?


Stasxxx   (2008-01-22 13:22:00) [70]

Я на втором курсе, только разбираться стал в задачах, код сортировки с учебника списал, немного отредактировал, в консоле он работает, правда немного коряво. Авторов этой книги я незнаю.


Сергей М.   (2008-01-22 13:20:00) [71]

По какому букварю учишься, новичок ?


Stasxxx   (2008-01-22 13:18:00) [72]

Зря смеешся, я новичок, ты тоже не сразу научился!!!Я помощи прощу, а приколов!


Сергей М.   (2008-01-22 13:16:00) [73]


> он ошибку не в этом месте выдает


Он еще и в другом месте выдаст, настоящие грабли еще только впереди)

Это что - код на зачет у препода или мазохизм ?


Stasxxx   (2008-01-22 13:12:00) [74]

Так он ошибку не в этом месте выдает! А вот здесь:
read(f,buf2);


Ega23   (2008-01-22 13:03:00) [75]

В весь код не вникал, ибо страшен.
Но подозрение вот на это:
assignfile(f2,'F:\chisla2.txt');
reset(f2);
readln(f2,s2);
k:=length(s2);
closefile(f2);


2 автор: учись пользоваться механизмом отладки.


Сергей М.   (2008-01-22 13:01:00) [76]


> в чем проблема


В попытке чтения за пределами конца файла


Skyle   (2008-01-22 13:01:00) [77]

А текст ошибки перевести на русский удалось?


Страницы:   1 2 3 4

Наверх

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