Вопрос задан 18.01.2020 в 12:30. Предмет Информатика. Спрашивает Солженицын Владимир.

Pascal. Файл F генерируется из случайных чисел, размерность файла указали.Изъять из файла все

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

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Карасёва Полина.

===== 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.

0 0
Отвечает Федотова Илона.

Ответ:

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.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения данной задачи вам потребуется выполнить следующие шаги:

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, в котором будут храниться отфильтрованные элементы из файла.

Обратите внимание, что приведенный код является лишь примером и может требовать доработки в зависимости от ваших конкретных требований.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос