Заполнить двоичный файл целыми числами из интервала [-3000; 8000]. Количество компонент файла вводится с клавиатуры. Поменять местами в файле первый нечетный по значению компонент и последний четный.
1) Тест для работы
2) Написать простой алгоритм
3) Код программы
4) Скрин шот
5) Заключение (какие логические ошибки)
Ответы
Ответ дал:
0
// PascalABC.NET 3.3, сборка 1634 от 14.02.2018
// Внимание! Если программа не работает, обновите версию!
begin
var fn:='MtFile.bin';
var n:=ReadInteger;
var f:file of integer;
var s:=SeqRandom(n,-3000,8000); // последовательность не хранится
Rewrite(f,fn);
foreach var m in s do Write(f,m);
f.Close; // файл создан и закрыт
Reset(f,fn);
var b:integer; // буфер
while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
Seek(f,0); // стали в начало файла
Read(f,b);
var iOdd:=0;
while not Eof(f) and b.IsEven do
begin Read(f,b); iOdd+=1 end;
if Eof(f) and b.IsEven then
begin Writeln('Нет нечетных компонентов'); exit end;
var (bb,iEven):=(b,n);
repeat
iEven-=1; Seek(f,iEven); Read(f,b)
until (iEven=1) or b.IsEven;
if b.IsOdd then begin Writeln('Нет четных компонентов'); exit end;
Seek(f,iEven); Write(f,bb);
Seek(f,iOdd); Write(f,b);
Seek(f,0);
while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
f.Close
end.
Пример
10
3166 6355 3596 6926 1266 6143 7401 7624 1402 -627
3166 1402 3596 6926 1266 6143 7401 7624 6355 -627
// Внимание! Если программа не работает, обновите версию!
begin
var fn:='MtFile.bin';
var n:=ReadInteger;
var f:file of integer;
var s:=SeqRandom(n,-3000,8000); // последовательность не хранится
Rewrite(f,fn);
foreach var m in s do Write(f,m);
f.Close; // файл создан и закрыт
Reset(f,fn);
var b:integer; // буфер
while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
Seek(f,0); // стали в начало файла
Read(f,b);
var iOdd:=0;
while not Eof(f) and b.IsEven do
begin Read(f,b); iOdd+=1 end;
if Eof(f) and b.IsEven then
begin Writeln('Нет нечетных компонентов'); exit end;
var (bb,iEven):=(b,n);
repeat
iEven-=1; Seek(f,iEven); Read(f,b)
until (iEven=1) or b.IsEven;
if b.IsOdd then begin Writeln('Нет четных компонентов'); exit end;
Seek(f,iEven); Write(f,bb);
Seek(f,iOdd); Write(f,b);
Seek(f,0);
while not Eof(f) do begin Read(f,b); Print(b) end; Writeln;
f.Close
end.
Пример
10
3166 6355 3596 6926 1266 6143 7401 7624 1402 -627
3166 1402 3596 6926 1266 6143 7401 7624 6355 -627
Ответ дал:
0
Так надо было об
Ответ дал:
0
об этом писать в условии.
Ответ дал:
0
А не в комментарии под сделанным заданием.
Ответ дал:
0
Представьте, что Вам дали сделать домашнее задание, Вы его выполнили, принесли, а в Вам сообщают, что надо было его на итальянском языке делать.
Ответ дал:
0
Подумайте, что Вам в этом случае захочется сказать, и считайте, что мы оба (ответа Вам два дали) эти слова сказали.
Вас заинтересует
2 года назад
2 года назад
3 года назад
3 года назад
9 лет назад
9 лет назад
10 лет назад
10 лет назад