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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> матрицы, выделение треугольника матрицы
сообщение
Сообщение #1


Пионер
**

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

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


Мне нужно
1) найти центр матрицы (7,7) и посчитать сумму нижнего треугольника.....как это сделать?
2)найти центр матрицы(5,5) и посчитать произведение левого бокового треугольника а правый треугольник заменить нулями.как найти эти треугольники?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата(Svetka @ 7.05.05 10:25)
1) найти центр матрицы (7,7) и посчитать сумму нижнего треугольника.....как это сделать?

middle := (n div 2) + 1;
for i := middle to n do
for j := 2 * middle - i to i do
s := s + a[i, j];

В твоем случае N = 7.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(Svetka @ 7.05.05 10:25)
2)найти центр матрицы(5,5) и посчитать произведение левого бокового треугольника а правый треугольник заменить нулями.как найти эти треугольники?

function min(a, b: integer): integer;
begin
min := a;
if b < a then min := b
end;
...
for i := 1 to n do
for j := 1 to min(i, n - i + 1) do begin
{ работаем с a[i, j] : элементами ЛЕВОГО треугольника }
end;
...
for i := 1 to 5 do
for j := n downto (n - min(i, n - i + 1)) + 1 do begin
{ работаем с a[i, j] : элементами ПРАВОГО треугольника }
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Цитата(volvo @ 7.05.05 13:45)
function min(a, b: integer): integer;
begin
  min := a;
  if b < a then min := b
end;
...
for i := 1 to n do
  for j := 1 to min(i, n - i + 1) do begin
    { работаем с a[i, j] : элементами ЛЕВОГО треугольника }
  end;
...
for i := 1 to 5 do
  for j := n downto (n - min(i, n - i + 1)) + 1 do begin
    { работаем с a[i, j] : элементами ПРАВОГО треугольника }
  end;


спасибо большое,а полегче нельзя левый и правый треугольники выделить.......
просто я пишу
Код
function pr(var d:matrix:n,k:integer):integer;
var
i.j:integer;
p1:integer;
begin
p1:=1;

а дальше что б шёл сразу цикл?
также и с обнулением правого треугольника
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
p := p * a[i, j]; { Левый треугольник }
a[i, n - j + 1] := 0; { Правый треугольник }
end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


Цитата(volvo @ 7.05.05 18:13)
for j := 1 to (n div 2) + 1 do
  for i := j to n - j + 1 do begin
    p := p * a[i, j];    { Левый треугольник }
    a[i, n - j + 1] := 0; { Правый треугольник }
  end;


пасибо)))
и сразу потом выводиться результат?=)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Ну, да... А что еще нужно?
Только сначала матрицу не забудь заполнить
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


Цитата(volvo @ 7.05.05 20:50)
Ну, да... А что еще нужно?
Только сначала матрицу не забудь заполнить

да........ я заполнила ......пасиба большое)))
а если сделать две функции
1 для произведения

Код

function pr(var d:matrix:n,k:integer):integer;
var
i.j:integer;
p1:integer;
begin
p1:=1;
for j := 1 to (n div 2) + 1 do
 for i := j to n - j + 1 do begin
   p := p * a[i, j];     { Левый треугольник }


другая для нулей
Код


function nul(var d:matrix:n,k:integer):integer;
var
i.j:integer;
n1:integer;
begin
n1:=0;
for j := 1 to (n div 2) + 1 do
 for i := j to n - j + 1 do begin
a[i, n - j + 1] := 0; { Правый треугольник }

так получается?или не так?)

Сообщение отредактировано: Svetka -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата(Svetka @ 7.05.05 19:55)
так получается?или не так?)

:yes: Так... Только я не понял, зачем тебе n1:=0;? Ты же его не используешь...

И, если можно, еще объясни, что за K ты передаешь в процедуру? Вроде по условию матрица квадратная, а не прямоугольная... unsure.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

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

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


Цитата(volvo @ 8.05.05 17:21)
:yes: Так... Только я не понял, зачем тебе n1:=0;? Ты же его не используешь...

И, если можно, еще объясни, что за K ты передаешь в процедуру? Вроде по условию матрица квадратная, а не прямоугольная...  unsure.gif

точно......я просто думала n это количество ненулевых а мне просто надо нулями заменить значит
Код

function nul(var d:matrix:n,k:integer):integer;
var
i.j:integer;
n1:integer;
begin
for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
a[i, n - j + 1] := 0; { Правый треугольник }
будет)
n кол-во строк а k кол-во столбцов)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Svetka,
и все-таки... По условию - матрица квадратная. Алгоритм тоже будет работать ТОЛЬКО с квадратной матрицей. А при квадратной матрице K = N... Так что придется тебе убрать K из списка параметров процедуры... Чем меньше параметров передаешь - тем лучше. Еще один вопрос: Что функция возвращает? Возможно, ее стоило бы сделать процедурой.

И убери "лишние" описания переменных...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Пионер
**

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

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


Цитата(volvo @ 8.05.05 18:51)
Svetka,
и все-таки... По условию - матрица квадратная. Алгоритм тоже будет работать ТОЛЬКО с квадратной матрицей. А при квадратной матрице K = N... Так что придется тебе убрать K из списка параметров процедуры... Чем меньше параметров передаешь - тем лучше. Еще один вопрос: Что функция возвращает? Возможно, ее стоило бы сделать процедурой.

И убери "лишние" описания переменных...


Код
program xxx;
uses crt;
type
matrix=array[1..5,1..5] of integer;
f:matrix;
p:integer;
procedure input(var d:matrix;n,k:integer);
var
i,j:integer;
begin
clrscr;
randomize;
for i:=1 to n do begin
for j:1 to k do
d[i,j]:=random(5);
end;
end;
procedure output(var d:matrix;n,k:integer);
var
i,j:integer;
begin
for i:=1 to n do begin
for j:1 to k do
write(d[i,j:4);
writeln;
end;
end;
function pr(var d:matrix:n,k:integer):integer;
var
i.j:integer;
p1:integer;
begin
p1:=1;
for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
  p1 := p1 * f[i, j];     { Левый треугольник }
end;
pr:=p1;
function nul(var d:matrix:n,k:integer):integer;
var
i.j:integer;
begin
for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
a[i, n - j + 1] := 0; { Правый треугольник }

у меня получилось вот так)
а когда выводишь матрицу input(f,5,5) она выводица уже заменённая нулями?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Тебя как видно мои замечания и исправления не интересуют - так вот: твоя программа даже не компилируется. Ошибки есть как синтаксические, так и логические. Но, извини, искать их придется тебе самой... <_<
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

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

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


Цитата(volvo @ 8.05.05 19:12)
Тебя как видно мои замечания и исправления не интересуют - так вот: твоя программа даже не компилируется. Ошибки есть как синтаксические, так и логические. Но, извини, искать их придется тебе самой...  <_<

не.....интересуют........если ты про k говоришь......то она запускается(не именно эта-другие)......просто я так привыкла делать.....
спасибо.........за помощь))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Пионер
**

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

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


я сделала программу....она запускается.....только правельно ли она считает произведение......

program xxx;
uses crt;
type
matrix= array[1..5,1..5] of integer;
var
f:matrix;
p:integer;
procedure input(var d:matrix;n,k:integer);
var
i,j:integer;
begin
clrscr;
randomize;
for i:=1 to n do begin
for j:=1 to k do
d[i,j]:=random(20);
end;
end;
procedure output(var d:matrix;n,k:integer);
var
i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to k do
write(d[i,j]:4);
writeln;
end;
end;
function pr(var d:matrix;n,k:integer):integer;
var
i,j:integer;
p1:integer;
begin
p1:=1;
for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
p1 := p1 * f[i, j]; { Левый треугольник }

pr:=p1;
end; end;
begin
i nput(f,5,5);
writeln('matrix f');
output(f,5,5);
p:=pr(f,5,5);
writeln(p);
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Perl. Just code it!
******

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

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


ты когда-нибудь слашала о контрольных примерах ? рисуешь на бумажке матрицу, считаешь произведение, затем вводишь туже матрицу в программу и сравниваешь результат, если не сошлось значит ошибка angry.gif

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Однозначно сказать нельзя. Для данного примера она может отработать правильно, но в ней содержится одна очень нехорошая ошибка...

klem4 - не раскрывай сразу...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Пионер
**

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

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


Цитата(volvo @ 8.05.05 20:52)
в ней содержится одна очень нехорошая ошибка...

я не могу найти ошибку.......программа не правельно считает произведение....других ошибок я не могу найти.....
я не прошу её искать........всё-таки я сама должна её найти......
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Пионер
**

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

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


Цитата(Svetka @ 8.05.05 21:18)
я не могу найти ошибку.......программа не правельно считает произведение....других ошибок я не могу найти.....
я не прошу её искать........всё-таки я сама должна её найти......

а может поможете найти ошибку если не трудно.......я не могу её найти....... :p2: rolleyes.gif unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Гость






function pr(var d:matrix;n,k:integer):integer;
var
i, j:integer;
p1:integer;
begin
p1:=1;
for j := 1 to (n div 2) + 1 do
for i := j to n - j + 1 do begin
p1 := p1 * f[i, j]; { <--- обращение к F здесь - первая ошибка }
pr:=p1; { <--- это вторая ошибка }
end;
end;


А теперь, Svetka, подумай, почему то что я отметил не есть хорошо?
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 17.05.2024 1:21
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name