Serge_Bliznykov,
1) Молодец =)
2) Я же сказал, код вообще не смотрел. Думал сколько в фале будет чисел, столько пусть и считывает в массив.
Помогите решить. Работа с файлами
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Спасибо, конечно - это все хорошо. Но проблемка в том, что её, к сожалению, всю надо реализовать на файлах. И создание файла, с рандомным заполнением, и сортировку обычную, и сливание с сортировкой. Вот такие дела=)) Не знаю как и быть.
Вот накалякал начало:
uses crt;
type f=file of integer;
var f1,f2:f;i,a,b,k,c,j:integer;
procedure sozd(var ff:f);
begin
k:=10;
rewrite(ff);
for i:=1 to k do begin
a:=random(150);
write(ff,a);
end;
close(ff);
end;
procedure vivod(var ff:f;t:string;c:byte);
begin
reset(ff);
writeln;
writeln;
writeln(t);
textcolor(c);
while not eof(ff) do begin
read(ff,a);
write(a,' ');
end;
close(ff);
textcolor(7);
end;
procedure sort(var ff:f);
begin
reset(ff);
i:=0;
repeat
seek(ff,i);read(ff,a,b);
if a>b then begin
seek(ff,i);
write(ff,b,a);
if i>0 then dec(i);
end
else inc(i);
until i>=filesize(ff)-1;
close(ff);
end;
BEGIN clrscr;
randomize;
assign(f1,'f1.txt');
assign(f2,'f2.txt');
sozd(f1);
vivod(f1,'File F1',12);
sort(f1);
vivod(f1,'File F1 sorted',10);
reset(f1);
sozd(f2);
vivod(f2,'File F2',12);
sort(f2);
vivod(f2,'File F2 sorted',10);
reset(f2);
readkey;
end.
Теперь вопрос: как процедуру sort которая сортирует по возрастанию применить ко второму файлу, который должен быть отсортирован по убыванию? Разница то только в знаке.
И теперь осталось слить в третий файл по возрастанию.
uses crt;
type f=file of integer;
var f1,f2:f;i,a,b,k,c,j:integer;
procedure sozd(var ff:f);
begin
k:=10;
rewrite(ff);
for i:=1 to k do begin
a:=random(150);
write(ff,a);
end;
close(ff);
end;
procedure vivod(var ff:f;t:string;c:byte);
begin
reset(ff);
writeln;
writeln;
writeln(t);
textcolor(c);
while not eof(ff) do begin
read(ff,a);
write(a,' ');
end;
close(ff);
textcolor(7);
end;
procedure sort(var ff:f);
begin
reset(ff);
i:=0;
repeat
seek(ff,i);read(ff,a,b);
if a>b then begin
seek(ff,i);
write(ff,b,a);
if i>0 then dec(i);
end
else inc(i);
until i>=filesize(ff)-1;
close(ff);
end;
BEGIN clrscr;
randomize;
assign(f1,'f1.txt');
assign(f2,'f2.txt');
sozd(f1);
vivod(f1,'File F1',12);
sort(f1);
vivod(f1,'File F1 sorted',10);
reset(f1);
sozd(f2);
vivod(f2,'File F2',12);
sort(f2);
vivod(f2,'File F2 sorted',10);
reset(f2);
readkey;
end.
Теперь вопрос: как процедуру sort которая сортирует по возрастанию применить ко второму файлу, который должен быть отсортирован по убыванию? Разница то только в знаке.
И теперь осталось слить в третий файл по возрастанию.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
Denton, а что мешает тебе сделать процедуру "сортировка по убыванию"?
Не боясь "насоветовать", предлагаю следующий вариант:
stype=true - по возрастанию, иначе по убыванию.
P.S. Код не проверял.
Не боясь "насоветовать", предлагаю следующий вариант:
Код: Выделить всё
procedure sort(var ff:f; stype: boolean ;) ;
begin
reset(ff);
i:=0;
repeat
seek(ff,i);read(ff,a,b);
if ((a>b) and (stype)) then begin
seek(ff,i);
write(ff,b,a);
if i>0 then dec(i);
end else if ((a<b) and (not stype)) then begin
seek(ff,i);
write(ff,b,a);
if i>0 then dec(i);
end else inc(i);
until i>=filesize(ff)-1;
close(ff);
end;
P.S. Код не проверял.
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
ок! работает. теперь самая малость осталась. ток самая проблемная))))
-
- Сообщения: 1
- Зарегистрирован: 29 май 2010, 20:38
Помогите решить задачку пожалуйста... Создать два вещественных файла А и В. Упорядочить их по возрастанию и создать новый файл из их компонент, упорядоченный по убыванию.Срочно... Помогите пожалуйста