Предмет: Информатика, автор: dinislamtop

Помогите сделать код по паскалю pascal
Нужно создать типизированный файл куда записать n целых чисел. На основе исходного файла создать массив утроенных чётных чисел. Упорядочить его по убыванию элементов

Ответы

Автор ответа: JaneClements
0

Відповідь: но ПОЖАЛУЙСТА, хотя бы разберись как работает.Старалась делить по частям, чтобы легче можно было разобраться.

program TripleAndSort;

const

 MaxSize = 100;

type

 IntArray = array[1..MaxSize] of Integer;

var

 inputFile, outputFile: file of Integer;

 numbers: IntArray;

 tripledEvenNumbers: IntArray;

 n, i, j, temp: Integer;

//Читает набор интеджеров от пользователя

procedure ReadNumbers(var numbers: IntArray; var n: Integer);

begin

 writeln('Enter the number of integers (n): ');

 readln(n);

 writeln('Enter ', n, ' integers:');

 for i := 1 to n do

   read(numbers[i]);

end;

//Здесь записывает в файл эти интеджеры.

procedure WriteToFile(var numbers: IntArray; n: Integer; filename: string);

var

 fileVar: file of Integer;

begin

 assign(fileVar, filename);

 rewrite(fileVar);

 for i := 1 to n do

   write(fileVar, numbers[i]);

 close(fileVar);

end;

//читает с файла

procedure ReadFromFile(var numbers: IntArray; var n: Integer; filename: string);

var

 fileVar: file of Integer;

begin

 assign(fileVar, filename);

 reset(fileVar);

 n := 0;

 while not eof(fileVar) do

 begin

   n := n + 1;

   read(fileVar, numbers[n]);

 end;

 close(fileVar);

end;

//процедура утроения четных чисел в массиве

procedure TripleEvenNumbers(var numbers: IntArray; n: Integer; var tripledEvenNumbers: IntArray);

var

 tripledIndex: Integer;

begin

 tripledIndex := 0;

 for i := 1 to n do

 begin

   if (numbers[i] mod 2 = 0) then

   begin

     tripledIndex := tripledIndex + 1;

     tripledEvenNumbers[tripledIndex] := numbers[i] * 3;

   end;

 end;

end;

//сортировка целых чисел в порядке убывания

procedure SortDescending(var numbers: IntArray; n: Integer);

begin

 for i := 1 to n - 1 do

   for j := i + 1 to n do

     if numbers[i] < numbers[j] then

     begin

       temp := numbers[i];

       numbers[i] := numbers[j];

       numbers[j] := temp;

     end;

end;

//главная программа

begin

 ReadNumbers(numbers, n);

 WriteToFile(numbers, n, 'inputFile.dat');

 ReadFromFile(numbers, n, 'inputFile.dat');

 TripleEvenNumbers(numbers, n, tripledEvenNumbers);

 SortDescending(tripledEvenNumbers, n);

 WriteToFile(tripledEvenNumbers, n, 'outputFile.dat');

 writeln('Tripled and sorted even numbers have been written to outputFile.dat');

end.

Похожие вопросы
Предмет: Алгебра, автор: kostlimon