Заполнение двумерного массива дробными числами с заданным количеством знаков после запятой. Вычисление произведения элементов столбца

Задача

Задать массив 6*7, заполненный дробными числами с 1 знаком после запятой. Найти произведение элементов некоторого столбца.

Решение

 

В Pascal вывести на экран вещественное число до определенного знака после запятой не проблема. Однако в памяти компьютера оно в любом случае будет храниться со множеством знаков после запятой. Если это не нули, то при вычислении они повлияют на результат. Но если их обнулить, то, несмотря на то, что разряды будут храниться в памяти, при вычислении они не сыграют никакой роли.

Для того, чтобы обнулить числа до определенного знака после запятой, следует умножить число на 10 (100, 1000 и т.д. - зависит от того, сколько значащих цифр следует оставить). После этого округлить до целых с помощью функции round(). В конце снова разделить на 10 (100, ...).

Функция random() без параметров генерирует вещественное число от 0 до 1. Если указать параметр, то генерируется целое от 0 до указанного числа.

Программа на языке Паскаль: 

 

const
    M = 6;
    N = 7;
type
    matrix = array[1..M, 1..N] of real;
var
    a: matrix;
    mult: real;
    i,j: byte;
begin
    randomize;
    for i:=1 to M do begin
        for j:=1 to N do begin
            a[i,j] := random();
            a[i,j] := a[i,j] * 10;
            a[i,j] := round(a[i,j]);
            a[i,j] := a[i,j] / 10;
            write(a[i,j]:5:2);
        end;
        writeln;
    end;
    write('The column: ');
    readln(j);
    mult := 1;
    for i:=1 to M do
        mult := mult * a[i,j];
    writeln(mult:10:7);
readln;
end.

 

Примечания: 

Если требуется, чтобы матрица была заполнена вещесвенными числами не от нуля до единицы, а скажем от 0 до 10, то в цикл следует добавить такую строку:

a[i,j] := a[i,j] + random(10);

 

Тема

Матрицы

Уровень

Комбинированные задачи