Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на языке Pascal


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты данной рассылки

Орловский Дмитрий
Статус: Академик
Рейтинг: 4558
∙ повысить рейтинг »
Boriss
Статус: Академик
Рейтинг: 2636
∙ повысить рейтинг »
Роман Селиверстов
Статус: Академик
Рейтинг: 2323
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Pascal (Паскаль)

Номер выпуска:1173
Дата выхода:28.04.2011, 02:30
Администратор рассылки:Boriss (Академик)
Подписчиков / экспертов:177 / 173
Вопросов / ответов:1 / 1

Вопрос № 182906: Здравствуйте! Прошу помощи в следующем вопросе: Даны две вещественные матрицы A(7,7) и B(5,5). Из матрицы A сформировать одномерный массив C по следующему правилу: Из средних арифметических положительных элементов столбцов А из матрицы B по...



Вопрос № 182906:

Здравствуйте! Прошу помощи в следующем вопросе:
Даны две вещественные матрицы A(7,7) и B(5,5). Из матрицы A сформировать одномерный массив C по следующему правилу:
Из средних арифметических положительных элементов столбцов
А из матрицы B по тому же правилу сформировать одномерный массив D. Для ввода матриц, формирования одномерных массивов и вывода одномерных массивов применить три PROCEDURE. При вводе матрицы и выводе одномерных массивов вывести на экран сообщения с указанием соответственно имени вводимой матрицы или имени выводимого одномерного массива.

Отправлен: 22.04.2011, 01:54
Вопрос задал: Андрей (2-й класс)
Всего ответов: 1
Страница вопроса »


Отвечает lamed (Академик) :
Здравствуйте, Андрей! Pascal-ABC
Код:
program p182906;
{ Даны две вещественные матрицы A(7,7) и B(5,5).
Из матрицы A сформировать одномерный массив C по следующему правилу:
Из средних арифметических положительных элементов столбцов
А из матрицы B по тому же правилу сформировать одномерный массив D.
Для ввода матриц, формирования одномерных массивов и вывода одномерных массивов применить три PROCEDURE.
При вводе матрицы и выводе одномерных массивов вывести на экран сообщения с указанием соответственно имени
вводимой матрицы или имени выводимого одномерного массива. }

const
MaxRows=100;
MaxCols=100;
RowsA = 7;
ColsA = 7;
RowsB = 5; ColsB = 5;

type
TVector = array[1..MaxRows] of real;
TMatrix = array[1..MaxRows, 1..MaxCols] of real;
var
s: string;
A, B: TMatrix;
C, D: Tvector;
r: integer;

procedure input2d(var mat: TMatrix; const rows, cols: integer; name: string);
{ ввод матрицы }
var
r,c: integer;
begin
writeln;
writeln('Матрица ', name);
for r:= 1 to rows do begin
for c:= 1 to cols do begin
write('mat[',r,',',c,']=');
readln(mat[r,c]);
end;
end;
end; {input2d}

procedure print( const vec: TVector; const rows: integer; const name: string );
{ печать вектора }
var
r,c: integer;
begin
writeln;
writeln('Вектор ', name);
for r:= 1 to rows do
write(vec[r]:5:2);
writeln;
end; {print}

procedure makeVec(const mat: TMatrix; const rows, cols: integer; var vec: TVector);
{ Из матрицы A сформирова ть одномерный массив C по следующему правилу:
Из средних арифметических положительных элементов столбцов }
var
r,c, n: integer;
sum: real;
begin
for c:= 1 to cols do
begin
sum:= 0;
n:= 0;
for r:= 1 to rows do
if mat[r,c]>0 then
begin
sum := sum+mat[r,c];
n:= n+1;
end;
if n=0 then
vec[c] := 0
else
vec[c] := sum/n;
end;
end; { MakeVec }

begin { main }
input2d(A, RowsA, ColsA, 'A');
input2d(B, RowsB, ColsB, 'B');

makeVec(A, RowsA, ColsA, C);
makeVec(B, RowsB, ColsB, D);

print(C, ColsA, 'C');
print(D, ColsB, 'D');
end.

Пример работы
Код:
Матрица A
mat[1,1]=1
mat[1,2]=2
mat[1,3]=3
mat[1,4]=4
mat[1,5]=5
mat[1,6]=6
mat[1,7]=7
mat[2,1]=1
mat[2,2]=2
mat[2,3]=3
mat[2,4]=4
mat[2,5]=5
mat[2,6]=6
mat[2,7]=7
mat[3,1]=1
mat[3,2]=2
mat[3,3]=3
mat[3,4]=4
mat[3,5]=5
mat[3,6]=6
mat[3,7]=7
mat[4,1]=1
mat[4,2]=2
mat[4,3]=3
mat[4,4]=4
mat[4,5]=5
mat[4,6]=6
mat[4,7]=7
mat[5,1]=1
mat[5,2]=2
mat[5,3]=3
mat[5,4]=4
mat[5,5]=5
mat[5,6]=6
mat[5,7]=7
mat[6,1]=1
mat[6,2]=2
mat[6,3]=3
mat[6,4]=4
mat[6,5]=5
mat[6,6]=6
mat[6,7]=7
mat[7,1]=1
mat[7,2]=2
mat[7,3]=3
mat[7,4]=4
mat[7,5]=5
mat[7,6]=6
mat[7,7]=7

Матрица B
mat[1,1]=0
mat[1,2]=1
mat[1,3]=1
mat[1,4]=-1
mat[1,5]=0
mat[2,1]=0
mat[2,2]=1
mat[2,3]=-1
mat[2,4]=-1
mat[2,5]=1
mat[3,1]=0< br>mat[3,2]=1
mat[3,3]=1
mat[3,4]=-1
mat[3,5]=0
mat[4,1]=0
mat[4,2]=1
mat[4,3]=1
mat[4,4]=1
mat[4,5]=1
mat[5,1] =0
mat[5,2]=0
mat[5,3]=0
mat[5,4]=0
mat[5,5]=0

Вектор C
1.00 2.00 3.00 4.00 5.00 6.00 7.00

Вектор D
0.00 1.00 1.00 1.00 1.00

С уважением

Ответ отправил: lamed (Академик)
Ответ отправлен: 22.04.2011, 08:45
Номер ответа: 266790
Россия, Ковров
Тел.: +79107793141

Оценка ответа: 5

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 266790 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:


  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.



    В избранное