
Pascal. Файл F генерируется из случайных чисел, размерность файла указали.Изъять из файла все
элементы, которые содержат хотя бы одну парную цифру, в ином случае - уменьшить все в 2 раза.

Ответы на вопрос

===== PascalABC.NET =====
function HasEven(n:integer): boolean;
begin
if n = 0 then
begin
Result := True;
Exit
end;
Result := True;
n := Abs(n);
while n > 0 do
if (n mod 10).IsEven then
Exit
else
n := n div 10;
Result := False
end;
begin
var f: file of integer;
var fn1 := ReadlnString('Укажите имя файла');
if not FileExists(fn1) then // файла нет - создаем
begin
var n := ReadInteger('Количество записей в файле:');
var (a, b) := ReadInteger2('Границы интервала данных:');
if a > b then
Swap(a, b);
f := CreateFileInteger(fn1);
Loop n do
f.Write(Random(a, b));
f.Close;
Println('Файл создан')
end;
// файл есть, обрабатываем его
// Создаем еще один файл и переписываем в него то, что должно остаться
var fn2 := '$$$temp$$$.bin';
if FileExists(fn2) then
DeleteFile(fn2);
var f2 := CreateFileInteger(fn2);
Println('Исходный файл');
var q := False;
f := OpenFileInteger(fn1);
while not f.Eof do
begin
var b := f.Read;
b.Print;
q := q or HasEven(b)
end;
f.Reset;
Writeln;
if q then
begin
// элемент с четной цифрой есть - исключение
while not f.Eof do
begin
var b := f.Read;
if not HasEven(b) then
f2.Write(b)
end
end
else // нет элемента с четной цифрой - все делим надвое
while not f.Eof do
f2.Write(f.Read div 2);
f.Close;
f2.Close;
DeleteFile(fn1);
RenameFile(fn2, fn1);
// выведем результат
Println('Результат');
ReadElements&<integer>(fn1).Println;
if FileExists(fn2) then
DeleteFile(fn2)
end.



Ответ:
var f : file of char; k : word; c1, c2 : char;
begin
assign(f, 'filename.dat');
reset(f);
k := 0; c2 := #0;
while not eof(f) do
begin
c1 := c2;
read(f, c2);
if (c1 = 'a') and (c2 = 'b') then inc(k);
end;
close(f);
writeln(k);
end.



Для решения данной задачи вам потребуется выполнить следующие шаги:
1. Определить размерность файла. Вы можете сделать это, например, прочитав первую строчку файла, в которой указана размерность.
2. Создать массив, размерность которого будет соответствовать указанной размерности файла.
3. Заполнить массив случайными числами. Для этого вы можете использовать функцию Random из модуля SysUtils и цикл for.
4. Открыть файл f для записи. Вы можете использовать функцию AssignFile для привязки файла к переменной.
Пример кода для создания и заполнения файла:
```pascal const fileDimension = 10; // пример размерности файла
var f: TextFile; i: Integer;
begin AssignFile(f, 'file.txt'); Rewrite(f);
Randomize; for i := 1 to fileDimension do Write(f, Random(100), ' '); // записываем случайное число, разделенное пробелом
CloseFile(f); end. ```
Теперь, имея заполненный файл, вы можете приступить к чтению из него и выполнению дальнейших операций.
5. Открыть файл f для чтения. Вы можете использовать функцию Reset для привязки файла к переменной.
6. Создать новый массив, в котором будут храниться только нужные элементы.
7. Прочитать из файла все числа и проверить, содержат ли они хотя бы одну парную цифру. Если да, то добавить их в новый массив. Если нет, то уменьшить число в два раза и добавить его в новый массив.
Пример кода для чтения из файла и фильтрации элементов:
```pascal var f: TextFile; numberArray: array of Integer; // массив для хранения элементов из файла filteredArray: array of Integer; // массив для хранения отфильтрованных элементов number, i: Integer; hasEvenDigit: Boolean;
begin AssignFile(f, 'file.txt'); Reset(f);
SetLength(numberArray, fileDimension); SetLength(filteredArray, fileDimension); // максимально возможное количество элементов
for i := 0 to fileDimension - 1 do begin Read(f, number); // читаем число из файла hasEvenDigit := False;
while number <> 0 do begin if (number mod 10) mod 2 = 0 then // если последняя цифра числа четная begin hasEvenDigit := True; Break; end; number := number div 10; // исключаем последнюю цифру из числа end;
if hasEvenDigit then filteredArray[i] := number // добавляем число в отфильтрованный массив else filteredArray[i] := number div 2; // уменьшаем число в два раза и добавляем в массив end;
CloseFile(f); end. ```
После выполнения кода у вас будет массив filteredArray, в котором будут храниться отфильтрованные элементы из файла.
Обратите внимание, что приведенный код является лишь примером и может требовать доработки в зависимости от ваших конкретных требований.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili