Сообщение от
praktikant_ya
Напишите программу, которая в заданной матрице заменяет все положительные элементы нулями, если количество отрицательных элементов окажется больше, чем количество положительных элементов.
Как то так. Смотри Оффтоп.
Оффтопикprogram Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
// Перечисляем нужные нам переменные
Var
Matrix: Array of Array Of Integer;
MatrixSizeX: Integer;
MatrixSizeY: Integer;
PositivCount: Integer;
NegativeCount: Integer;
IncrX: Integer;
IncrY: Integer;
Str: String;
begin
// Задаём случайный размер матрицы
Randomize;
MatrixSizeX := Integer(Random(2))+4;
MatrixSizeY := Integer(Random(2))+4;
SetLenGth(Matrix, MatrixSizeX, MatrixSizeY);
// Выставляем счётчики положительных и отрицательных чесел в ноль
PositivCount := 0;
NegativeCount := 0;
// Выводим на экран размер мартицы где X - строки, Y - столбцы
WriteLn(Output, 'Matrix: '+ IntToStr(MatrixSizeY)+'x'+IntToStr(MatrixSizeX));
WriteLn(OutPut, '');
// Цыклично заполняем массив случайными числами
// в диапазоне от -9 до -1 и от 1 до 9
for IncrX := Low(Matrix) to High(Matrix) do
Begin
// Очищаем строку для заполнения её строкой массива
Str := '';
for IncrY := Low(Matrix[IncrX]) to High(Matrix[IncrX]) do
Begin
Matrix[IncrX, IncrY] := 0;
while Matrix[IncrX, IncrY] = 0 do
Begin
Matrix[IncrX, IncrY] := Integer(Random(18)-9);
End;
// Подсчитываем количество отрицательных и положительных чисел
if Matrix[IncrX, IncrY] > 0 then
Inc(PositivCount)
Else
Inc(NegativeCount);
// Формируем в строке строку массива
str := str + IntToStr(Matrix[IncrX, IncrY])+ #09;
End;
// Выводим строку со строкой массива на экран
WriteLn(OutPut, Str);
End;
// Выводим на экран резульнат подсчёта отрицательных и положительных чисел.
WriteLn(OutPut, '');
WriteLn(OutPut, 'PositivCount: ' + IntToStr(PositivCount));
WriteLn(OutPut, 'NegativeCount: ' + IntToStr(NegativeCount));
WriteLn(OutPut, '');
// Проверяем на вероятность того, что количество положительных
// равно количеству отрицательных
If PositivCount = NegativeCount then
Begin
WriteLn(OutPut, 'Positive equally negative.');
End;
// Проверяем на вероятность того, что количество положительных
// больше количества отрицательных
If PositivCount > NegativeCount then
Begin
WriteLn(OutPut, 'More positive than negative.');
End;
// Проверяем на вероятность того, что количество положительных
// меньше количества отрицательных
If PositivCount < NegativeCount then
Begin
WriteLn(OutPut, 'Less positive than negativ.');
WriteLn(OutPut, '');
// Перебираем в цыклах массив, и изменяем положительные числа нулями
for IncrY := Low(Matrix) to High(Matrix) do
Begin
// Очищаем строку для заполнения её строкой массива
Str := '';
for IncrX := Low(Matrix[IncrY]) to High(Matrix[IncrY]) do
Begin
If Matrix[IncrX, IncrY] > 0 Then
Begin
Matrix[IncrX, IncrY] := 0;
End;
// Формируем в строке строку массива
Str := Str + IntToStr(Matrix[IncrX, IncrY]) + ' ';
End;
// Выводим строку со строкой массива на экран
WriteLn(OutPut, Str);
End;
End;
// Выводим сообщение о способе выхода из програмы
WriteLn(Output, 'Press Enter to Exit...');
ReadLn(Input, Str);
end.