Отредактировать код на Паскале, среда PascalABC

компьютеры программирование программы pascal паскаль

Не выходит выполнить условие: в файле перед каждым парным элементов добавить 0, а после каждого элемента, в котором нету цифры 0, добавить элемент, который будет меньше на 2.
Например, в файле есть числа 10, 22, 33, 201. Должно выйти так: (0) 10 (0) 22 (20) 33 (31) 201
Заставляют делать все по примеру, в котором процесс создания, чтения и т. д. файла одинаков, отличаются лишь конкретные задания (пункт 4 меню) . Спасибо.
Код:
program stv_file;
uses crt;
var f,f1:file of integer;
x,n,s,m, d:integer;
r:byte;
begin
clrscr;
assign(f,'dan.dat');
{clrscr;}
writeln('Меню');
writeln('1- Создание файла');
writeln('2- Просмотр файла');
writeln('3- Дополнение файла');
writeln('4 - Выполнение задания');
writeln('5- Выход');
REPEAT
writeln('Выберите режим');
read(r);
case r of
1:begin
{$i-}
rewrite(f);
{$i+}
if FileExists('dan.dat')=false then
begin
write('Файл уже существует');
CLOSE(F);
exit;
end;
writeln('Остановка наполнения файла - число 9999');
repeat
read(x);
if x<>9999
then write(f,x)
else break;
until false;
writeln(' Файл создан');
close(F);
end;
2:Begin
{$i-}
reset(f);
{$i+}
if FileExists('dan.dat')=false then
begin
write('Файл не существует');
CLOSE(F);
exit;
end;
writeln('Содержимое файла');
while not eof(f) do
begin
read(f,x);
write(x:4,' ')
end;
writeln('Файл прочитан полностью');
close(F);
end;
3:begin
{$i-}
reset(f);
{$i+}
if FileExists('dan.dat')=false then
begin
write('Файл не существует');
CLOSE(F);
exit;
end;
seek(f,filesize(f));
writeln('Остановка наполнения файла - число 9999');
repeat
read(x);
if x<>9999
then write(f,x)
else break;
until false;
close(F);
end;
4: begin {$i-}
reset(f);
{$i+}
if FileExists('dan.dat')=false
then begin
write('Файл не существует');
CLOSE(F);
exit;
end;
assign(f1,'dal.dat');
rewrite(f1);
write('Содержимое файла ');
reset(f);
while not EOF(f) do
begin
read(f,x);
write(x,' ');
end;
close(f);
writeln;
reset(f);
while not EOF(F) do begin
read(f,x);
n:=abs(x);
while n<>0 do
begin
m:=n mod 10;
n:=n div 10;
if m<>0 then begin write(f,x); d:=x-2; write(f,d); end; end;
close(F);
close(f1);
erase(f);
rename(f1,'dan.dat');
writeln;
end; end;
0: exit;
end;
until false;
end.
Ответы:
Много однообразного кода... За небольшую плату можно сделать, а так лень...


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.