Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [турбо паскаль] одномерный массив вещественных чис


Автор: Gorpik 8.11.2011, 01:19
Помогите, пожалуйста. Задача:

Цитата

Ввести одномерный массив вещественных чисел A(N) (N<=50)  и выдать его на печать. Все его положительные элементы разделить на произведение положительных элементов массива и записать в массив Y. Выдать на печать массив Y  или сообщение о невозможности его создания.

Автор: t_gran 9.11.2011, 10:37
Код

const
    CSize = 50;

type
    TArray = array [1..CSize] of real;

{-----------------------------------------------}
{Процедура заполняет массив случайными числами}
procedure Fill(var theArray: TArray; theSize: word);
var
    i: word;
begin
    randomize;
    
    for i := 1 to theSize do
        theArray[i] := random(1000) / 100 - 5;
end;
{-----------------------------------------------}
{Процедура выводит все элементы массива}
procedure Print(theArray: TArray; theSize: word);
var
    i: word;
begin
    for i := 1 to theSize do
        write(theArray[i]:2:4, ' ');
end;
{-----------------------------------------------}
{Функция находит произведение всех положителльных элементов}
function ProductOfNumbers(theArray: TArray; theSize: word): real;
var
    i: word;
    result: real;
begin
    result := 1;
    
    for i := 1 to theSize do
        if (theArray[i] > 0) then
            result := result * theArray[i];
    
    ProductOfNumbers := result;
end;
{-----------------------------------------------}
{Процедура копирует элементы с одного массива в другой,
 при этом делит все положительные элменты на заданное число}
procedure CopyWithDivision(theArrayA: TArray; var theArrayY: TArray;
                                    theSize: word; theNumber: real);
var
    i: word;
begin
    for i := 1 to theSize do
        if (theArrayA[i] > 0) then
            theArrayY[i] := theArrayA[i] / theNumber
        else
            theArrayY[i] := theArrayA[i];
end;
{-----------------------------------------------}

var
    a, y: TArray;
    n: word;
    product: real;
    
begin
    write('input size array (max=', CSize, '): ');
    readln(n);
    
    if (n > CSize) then
    begin
        writeln('error: max < ', n);
        exit;
    end;

    Fill(a, n);
    write('a: ');
    Print(a, n);
    writeln;

    product := ProductOfNumbers(a, n);
    writeln('product=', product:2:4);
    
    CopyWithDivision(a, y, n, product);
    
    write('y: ');
    Print(y, n);
end.


Бинарник с исходником ниже

Автор: Gorpik 12.11.2011, 00:45
t_gran, благодарю. Спасибо огромное!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)