Удалить из файла первую отрицательную компоненту - Pascal ABC
Формулировка задачи:
Помогите пожалуйста с задачей
Ввести файл. Удалить из него первую отрицательную компоненту. Файл вывести
Решение задачи: «Удалить из файла первую отрицательную компоненту»
textual
Листинг программы
Program lab_10;
uses
crt;
var
f: file of integer;
ineg,neg,a,n,i:integer;
begin
clrscr;
ineg:=-1;
assign (f, 'File1');
rewrite(f);
writeln ('Vvedite chislo elementov faila.');
readln (n);
writeln ('Vvedite elementy fajla');
for i:= 1 to n do
begin
readln (a);
write (f,a);
end;
clrscr;
writeln('Soderzanie ishodnogo fajla:');
reset (f);
for i:=0 to filesize(f)-1 do
begin
read (f,a);
write(a,' ');
end;
reset (f);
for i:=0 to filesize(f)-1 do
begin
read (f,a);
if a<0 then
begin
neg:=a;
ineg:=i;
break;
end;
end;
writeln;
writeln ('1 otrizatelny element= ', neg,' nomer=',ineg+1);
if ineg<0 then
begin
writeln('Net otrizatelnix');
readln;
exit;
end;
if ineg=filesize(f)-1 then
begin
seek(f,filesize(f)-1);
truncate(f);
end
else
begin
for i:=ineg+1 to filesize(f)-1 do
begin
seek(f,i);
read(f,a);
seek(f,i-1);
write(f,a);
end;
seek(f,filesize(f)-1);
truncate(f);
end;
seek(f,0);
writeln('Udalenie otr:');
while not Eof(f) do
begin
read (f,a);
write(a,' ');
end;
close (f);
readln;
end.
Объяснение кода листинга программы
- Создается программа lab_10, которая использует язык программирования Pascal ABC.
- В программе используется файл 'File1' для чтения и записи данных.
- Переменная ineg инициализируется значением -1.
- Переменная f используется для работы с файлом.
- Число элементов файла вводится пользователем.
- Чтение и запись данных в файл происходит в цикле for i := 1 до n do.
- Числа считываются из файла и записываются в переменную a.
- Цикл прерывается, если число a меньше 0.
- Если число a меньше 0, то оно сохраняется в переменной neg, а номер i сохраняется в переменной ineg.
- Если в файле есть хотя бы одно отрицательное число, программа выводит сообщение об этом и завершается.
- Если в файле нет отрицательных чисел, программа продолжает работу.
- Если в файле есть только один элемент, программа удаляет его, используя функции seek и truncate.
- Если в файле больше одного элемента, программа перезаписывает его, считывая и записывая данные в файл.
- Программа завершается после того, как все элементы файла были прочитаны и записаны.