Сортировка чисел в файле - Pascal
Формулировка задачи:
Ув.программисты помогите решить задачу.Дан файл целых чисел. Нулевых компонент в файле нет. Число отрицательных компонент равно числу положительных. Преобразовать файл таким образом, чтобы сначала были положительные числа, а затем отрицательные. Порядок следования как положительных, так и отрицательных чисел сохранить.
вот то что я уже написал
program lab10; const n=6; procedure write_file_of_int(var t:file of integer); //вводит значения в файл var i:byte; c:integer; begin Assign(t,'D:\temp'); Rewrite(t); Writeln('VVedite celue 4ucla Faila'); for i:=1 to n do begin read(c); write(t,c); end; writeln('VVod okon4en'); close(t); end; procedure Vuvod_file_of_integer(var t:file of integer); //выводит все числа файла var i:byte; c:integer; begin Assign(t,'D:\temp'); Reset(t); Writeln('4ucla kotorue buli vvedenu'); for i:=1 to n do begin read(t,c); write(c,' '); end; close(t); end; procedure coptipovka(var t:file of integer); //сортировка числе в самом файле Var i:byte; c:integer; begin Assign(t,'D:\temp'); rewrite(t); writeln('4ucla posle sortirovki'); for i:=1 to n do begin Read(t,c); if (c<0) then begin //seek(t,filesize(t)-1); write(t,c); //seek(t,i); end; end; close(t); end; var t:file of integer; begin write_file_of_int(t); Vuvod_file_of_integer(t); coptipovka(t); Vuvod_file_of_integer(t); readln; readln; end.
люддииии=(((помогите плз
людии ну кто нибудь
Решение задачи: «Сортировка чисел в файле»
textual
Листинг программы
uses crt; var f:file of integer; n,a,b,k,i,j,p:integer; begin clrscr; randomize; assign(f,'file'); rewrite(f); write('Сколько пар чисел записать в файл? n='); readln(n); for i:=1 to 2*n do begin a:=random(10)+1;//для теста можно просто парами рандомно b:=-a; write(f,a,b); {readln(a);//если реальные числа write(f,a);} end; writeln('Содержание исходного файла:'); reset(f); while not eof(f) do begin read(f,a); write(a,' '); end; writeln; writeln; close(f); {перестановка положительных вперед} reset(f); seek(f,0); read(f,a); if a>=0 then p:=1//если первое положительное, начнем со второго else if a<0 then p:=0; k:=p-1;//количество перестановок for i:=p to filesize(f)-1 do begin seek(f,i); read(f,a);//читаем числа if a>0 then//если полож. begin k:=k+1;//считаем for j:=i downto k+1 do//сдвигаем к нему элементы файла от последней вствки на 1 begin seek(f,j-1); read(f,b); seek(f,j); write(f,b); end; seek(f,k);//на освободившееся место вставляем найденный положительный write(f,a); end; end; close(f); writeln('Перестановка положительных вперед:'); reset(f); while not eof(f) do begin read(f,a); write(a,' '); end; close(f); readln end.
Объяснение кода листинга программы
- Создается файл с именем
file
и открывается для записи. - Задается вопрос пользователю о количестве пар чисел, которые нужно записать в файл.
- Для каждой пары чисел (a и b) выполняется запись в файл.
- После записи каждой пары чисел выводится содержимое файла.
- Файл считывается построчно до конца файла.
- Если первое число положительное, то оно помещается в начало файла, а остальные числа переносятся в конец файла.
- Выполняется перестановка положительных чисел в начале файла.
- Файл считывается построчно до конца файла.
- Выводится содержимое файла после перестановки положительных чисел.
- Файл закрывается.