Страница 1 из 1

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 14:22
Marik
Добрый вечер! Взялась за очередную контрольную. Проверьте, пожалуйста задачу.
Дана матрица
$$A={ {a ij} }_{3*4}$$
Вычислить величину

$$Y=lnS1+sin|S2|$$
где S1-сумма квадратов элементов матрицы
S2-сумма отрицательных элементов.

Решение:

Program ZAD_1_6;
Var
A: array [1..3,1..4] of real;
i,j: integer;
S1, S2, Y; real;
Begin
writeln ('Введите матрицу A');
for i:=1 to 3 do
for j:=1 to 4 do read (a [i,j]);
S1:=0;
S2:=0;
for i:=1 to 3 do
for j:=1 to 4 do
begin
if a[i,j] < 0 then S2:=S2+a[i,j];S1:=S1+sqr(a[i,j]);end;Y:=lnS1+sinabs(S2) ;write ('Y=', Y:6:2);end.

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 14:26
12d3
Compilation error: lnS1 - unknown identifier.
Compilation error: sinabs - unknown identifier.
A так вроде все правильно.

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 14:45
Marik
по поводу первой ошибки может надо записать ln(S1)-? A за вторую ошибку, я если честно не поняла, co напутала при описании S1,S2, Y там двоеточие должно быть

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 15:05
Dragon27
Marik писал(а):Source of the post A за вторую ошибку, я если честно не поняла

sin(abs(S2)); наверняка

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 15:16
Marik
Спасибо)

Вот еще одну задачу решила. Посмотрите, пожалуйста на наличие ошибок.
Дана матрица
$$A={aij}_{6*4}$$ Найти сумму положительных элементов каждого столбца матрицы.

Program ZAD_2_6;
Var
A: array [1..6,1..4];
S, i, j: integer;
begin
for j:=1 to 4 do
for i:=1 to 6 do read (a[i,j]);
for j:=1 to 4 do
begin
S:=0;
for i:=1 to 6 do
if a[i,j]>0 then S:=S+a[i,j];
write ('S=', S);
end;
end.

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 15:25
grigoriy
Сделал 2 исправления.

Program ZAD_2_6;
Var
A: array [1..6,1..4] of integer; ------не указан тип элементов
S, i, j: integer;
begin
for j:=1 to 4 do
for i:=1 to 6 do read (a[i,j]);
for j:=1 to 4 do
begin
S:=0;
for i:=1 to 6 do
if a[i,j]>0 then S:=S+a[i,j];
writeln ('S=', S); ----вывод лучше c переводом строки, иначе всё сливается.
end;
end.

Компилятор ошибок не выдает. И логика верная.

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 15:27
Marik
Спасибо большое)

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 15:34
grigoriy
Вывод можно сделать ещё так
writeln ('S',j,'=', S);
Тогда будет печатать
S1=321
S2=854
и т.д

Программирование в турбо Паскале

Добавлено: 07 фев 2011, 23:24
SiO2
Да уж. Помнится после паскаля долго предпочитал ставить скобочки даже на контрольной по математике.)))