IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> матрица, сумма элементов
Римус
сообщение 2.03.2007 19:35
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Люди , помогите пожалуйста решить задачу.
ЗАДАНИЕ 1. Дана матрица D(n*m). Найти сумму элементов по каждому столб¬цу, разделив её на максимальный диагональный элемент.
program pract11_1;
const n=3;m=3;
type mas=array[1..n,1..m] of integer;
mas2=array[1..n] of integer;
var j,i:integer; a:mas2; d:mas; s:integer; max:mas2;
begin
for i:=1 to n do
for j:=1 to m do
begin
writeln('vvedite ',i,',',j,' element matrici');
read(d[i,j]);
end;
for J:=1 to m do
begin
s:=0;
for i:=1 to n do
s:=s+d[i,j];
a[i]:=s;
end;
for i:=1 to n do
max:=d[1,1];
if d[i,i]>max then max:=d[i,i];
a[i]:=s/max;
writeln('stolbec',i,'stoki',a[i]:8);
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
Bokul
сообщение 2.03.2007 20:11
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +



{$mode TP}//удали если компилируешь не в Fpc
uses crt;
const
n=5;
type
mas=array[1..n,1..n] of integer;

function FindMaxDiag(ar:mas):integer;//находим максимальный элемент, находящийся на диагоналях
var i:byte;
max:integer;
begin
max:=ar[1,1];
for i:=1 to n do begin
if (max<ar[i,i]) then
max:=ar[i,i];
if (max<ar[i,n-i+1]) then
max:=ar[i,n-i+1];
end;
FindMaxDiag:=max;
end;

Function FindSumColumn(ar:mas; col:byte):integer;//считаем сумму элементов колонки
var i:byte;
sum:integer;
begin
sum:=0;
for i:=1 to n do
inc(sum,ar[i,col]);
FindSumColumn:=sum;
end;

var ar:mas;
i,j:byte;
sum,diag:integer;
begin
clrscr;
randomize;
for i:=1 to n do begin
for j:=1 to n do begin
ar[i,j]:=random(9);
write(ar[i,j],' ');
end;
writeln;
end;

diag:=FindMaxDiag(ar);
writeln('Maximum: ',diag);
for i:=1 to n do
writeln('Cloumn ',i,' ',FindSumColumn(ar,i)/diag:0:2);
readln;
end.





Сообщение отредактировано: Bokul - 2.03.2007 20:14


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#Time#
сообщение 2.03.2007 20:59
Сообщение #3


Гость






Я подредактировал твою программу немного.
Сделал числа действительными, так как у тебя деление нужно выполнять - с действительными числами удобнее. Исправил несколько ошибок... и в конце там... в общем посмотри...
Теперь должно всё правильно работать...
Код
program pract11_1;
const n=3;m=3;
type mas=array[1..n,1..m] of real;
     mas2=array[1..n] of real;
var j,i:integer; a:mas2; d:mas; s,max:real;
begin
  for i:=1 to n do
  for j:=1 to m do
    begin
    writeln('vvedite ',i,',',j,' element matrici');
    read(d[i,j]);
    end;
for J:=1 to m do
       begin
       s:=0;
       for i:=1 to n do
       s:=s+d[i,j];
       a[j]:=s;
       end;
max:=d[1,1];
for i:=1 to n do
if d[i,i]>max then max:=d[i,i];
for i := 1 to n do
begin
  a[i]:=a[i]/max;
  writeln('stolbec ',i,' stoki ',a[i]:4:2);
end;
readln;
end.
 К началу страницы 
+ Ответить 
Bokul
сообщение 2.03.2007 21:05
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


#Time#, не знаю ли это то, что надо автору, но в матрицы, походу, есть две диагонали, и максимальный элемент надо искать среди них..?


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
#Time#
сообщение 2.03.2007 21:17
Сообщение #5


Гость






В условие было написано диагональный элемент...
В общем я это воспринял как максимальный элемент в главной диагонале.
С учетом этого и решил. Ну а если брать максимальный в обоих диагоналях, то к примеру можно добавить после нахождения максимума по главной продолжение нахождения по второстипенной диагонале:
Код
for i:=1 to n do
if d[n-i+1,i]>max then max:=d[n-i+1,i];

А лучше это в одном цикле одновременно делать...

Сообщение отредактировано: #Time# - 2.03.2007 21:18
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 17:26
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"