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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> Сумма элементов массива, Как найти сумму элементов заштрихованной
Legolas
сообщение 12.05.2005 9:33
Сообщение #1


Новичок
*

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

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


Всем привет!
Кто знает, может поможет решить вот такую задачу:

Дан двумерный действительный массив А[n, n]. Найти сумму элементов заштрихованной области массива А, предварительно записав их в массив В[k].

Всем заренее благодарен smile.gif


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 12.05.2005 9:54
Сообщение #2


Профи
****

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

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


Поможем! Только что вам не ясно? Покажите что сделано...


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 12.05.2005 19:34
Сообщение #3


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

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

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


1 наверно по короче можно,а вот в третьем на диоганалях надо или нет ?? я вот не пойму (у меня без).

1)

i:=0;j:=1;s:=0;
while i<n do
begin
inc(i);
inc(s,x[i,j]);
end;
j:=1;
while j<n do
begin
inc(j);
inc(s,x[i,j]);
end;
while i<>1 do
begin
dec(i);
inc(s,x[i,j]);
end;
while j<>2 do
begin
dec(j);
inc(s,x[i,j]);
end;


2)

s:=0;
for i:=1 to n do
begin
inc(s,x[i,i]);
inc(s,x[i,n-i+1]);
end;
dec(s,x[(n+1) div 2,(n+1) div 2]);


3)
s:=0;
for i:=1 to n div 2 do
for j:=i+1 to n-i do
inc(s,x[i,j]);
for i:=n downto n div 2 do
for j:=n-i+2 to i-1 do
inc(s,x[i,j]);


4)
s:=0;
for i:=2 to n-1 do
for j:=2 to n-1 do
inc(s,x[i,j]);


бгы)

в первом можно посчетать полную сумму и вычесть сумму, которая считается в номере 4). :D

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


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


Новичок
*

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

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


Вот исходники:

program z16a;
Код
uses crt;
type mas=array[0..5,0..5] of real;
var i,j,n,m,i1,j1,k,l:integer;s:real;
a,b:mas;
label q,q1;
begin
clrscr;
writeln('vvedite razmernost');
readln(n,m);

writeln('vvedite elementi');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);

write('i=');readln(i1);
write('j=');readln(j1);
k:=1;l:=1;
for i:=1 to n do begin
for j:=1 to m do begin
                if i=i1 then goto q;
                if j=j1 then goto q1;
                s:=s+a[i,j];
                {for l:=1 to 1 do}
                b[k,l]:=s;
                inc(l);
                q1:end;inc(k);
                q:s:=0;
                  l:=1;

                  end;
for k:=1 to n-1 do begin writeln;
for l:=1 to m-1 do write(b[k,l]:2:2,' ');end;writeln;
readkey
end.



program z16b;
Код
uses crt;
type mas=array[0..5,0..5] of real;
var i,j,n,m,i1,j1,k,l,x,y:integer;s:real;
a,b:mas;

begin
clrscr;
writeln('vvedite razmernost');
readln(n,m);

writeln('vvedite elementi');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);

write('i=');readln(i1);
write('j=');readln(j1);

for i:=1 to i1-1 do begin
for j:=j1+1 to m do begin
                s:=s+a[i,j];
                b[i,j]:=s;
                end;
                s:=0;end;
for i:=1 to i1-1 do begin writeln;
for j:=j1+1 to m do write(b[i,j]:2:2,' ');end;writeln;
readkey
end.


program z16c;
Код
uses crt;
type mas=array[0..5,0..5] of real;
var i,j,n,m,i1,j1,k:integer;s:real;
a,b:mas;
label q,q1;
begin
clrscr;
writeln('vvedite razmernost');
readln(n,m);

writeln('vvedite elementi');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);

write('i=');readln(i1);
write('j=');readln(j1);

for i:=i1+1 to n do begin
for j:=1 to j1-1 do begin
                s:=s+a[i,j];
                b[i,j]:=s;
                end;q:s:=0;end;
for i:=i1+1 to n do begin writeln;
for j:=1 to j1-1 do write(b[i,j]:2:2,' ');end;writeln;
readkey
end.



program z16d;
Код
uses crt;
type mas=array[0..5,0..5] of real;
var i,j,n,m,i1,j1,k,l,x,y:integer;s:real;
a,b:mas;
label q,q1;
begin
clrscr;
writeln('vvedite razmernost');
readln(n,m);

writeln('vvedite elementi');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);

for i:=2 to n-1 do begin
for j:=2 to m-1 do begin
                s:=s+a[i,j];
                b[i,j]:=s;
                end;
                s:=0;end;
for i:=2 to n-1 do begin writeln;
for j:=2 to m-1 do write(b[i,j]:2:2,' ');end;writeln;
readkey
end.



только надо доделать.

Тегами CODE пользуемся...

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


Гость






Цитата(Legolas @ 12.05.05 9:33)
Найти сумму элементов заштрихованной области массива А, предварительно записав их в массив В[k].

Возникает вопрос, почему массив B у тебя тоже объявлен двумерным? Он должен быть одномерным, не так ли?

Второе - почему ты делаешь
for ...
 s:=s+a[i,j];
 b[i,j]:=s;

если тебе надо предварительно записать элементы для суммирования в массив B?

И посмотри на пост №3, там кое-что есть...
 К началу страницы 
+ Ответить 
Legolas
сообщение 13.05.2005 1:22
Сообщение #6


Новичок
*

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

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


Цитата(volvo @ 13.05.05 9:09)
Возникает вопрос, почему массив B у тебя тоже объявлен двумерным? Он должен быть одномерным, не так ли?
Задача на преобразование и построение матриц, а одномерный массив - это вектор. Может мой ход мыслей и не правильный ;-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 13.05.2005 1:36
Сообщение #7


Гость






Хорошо... Я переформулирую вопрос. Ты можешь к МАТРИЦЕ обращаться с одним индексом? Или все-таки только к ВЕКТОРУ? В задании у тебя как раз один индекс при обращении к B...
 К началу страницы 
+ Ответить 
Legolas
сообщение 13.05.2005 1:41
Сообщение #8


Новичок
*

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

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


Всем привет.
Сейчас решаю вот такие задачи, сам пока еще не сделал, но думаю вы мне поможете. Заранее благодарен за ответы.

Задачи:

1. Дана действительная квадратная матрица порядка п. найти наибольшее из значений элементов, расположенных в заштрихованной области матрицы. (см. присодиненное изображение)

2. Дана действительная квадратная матрица порядка 2п. получить новую матрицу, переставляя ее блоки размера п х п: (см. рисунок)

3. Имеется таблица Т результатов некоторого шахматного турнира, в котором участвовало n (n>2) шахматистов:
T: array [1..n, 1..n] of (V, N, P, X),
где T[i, j] = V, если i-ый участник выиграл у j-го ( при этом T[j, i] = P),
T[i, j] = N, если i-ый и j-ый участники сыграли вничью. В противном случае T[i, j] = Х.

При n = 3 возможет следующий вид таблицы: (см. рисунок)
За выигрыш дается 1 очко, за ничью – 0,5 очка, за проигрыш – 0 очков. Вывести номера участников в порядке невозрастания набранных ими очков.

Однотипные задачи объединены...

Сообщение отредактировано: volvo - 13.05.2005 9:02


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Legolas
сообщение 13.05.2005 1:44
Сообщение #9


Новичок
*

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

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


Цитата(volvo @ 13.05.05 9:36)
Хорошо... Я переформулирую вопрос. Ты можешь к МАТРИЦЕ обращаться с одним индексом? Или все-таки только к ВЕКТОРУ? В задании у тебя как раз один индекс при обращении к B...

Преподаватель не очень корректно объяснил...
Кажется надо вывести еще и матрицу B ;-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 13.05.2005 8:36
Сообщение #10


Профи
****

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

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


Может массив B действительно двумерный, но в него должны вводиться (задаваться) заштрихованные области?

Не используй конструкции GOTO. В крайнем случае заменяй их на BREAK и CONTINUE.

Объясни смысл переменных i1 и j1 в программе z16a

Сообщение отредактировано: hiv - 13.05.2005 9:17


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 13.05.2005 14:12
Сообщение #11


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

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

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


сократил задание N1
s:=0;
for i:=1 to n do
if (i<>1)and(i<>n) then
begin
inc(s,x[i,1]);
inc(s,x[i,n]);
end
else
for j:=1 to n do
inc(s,x[i,j]);


ps
inc(s,x[i,j])
естественно только в случае, если матрица из целых чисел, иначе просто
s:=s+x[i,j];


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


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


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

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

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


ха-ха ты в FAQ заглядывал ?))) http://forum.pascalnet.ru/index.php?showt...indpost&p=23247 там же все есть! новое прикрепленное задание давай-ка сам ;) :yes:


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


Новичок
*

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

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


Ну, может кто-нибудь всё-таки поможет сделать приклепленные задачи ;-)
А я параллельно буду делать сам, потом посмотрим, у кого что вышло.
Всем заранее благодарен. Goodbye.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 14.05.2005 7:58
Сообщение #14


Профи
****

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

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


Цитата(Legolas @ 14.05.05 2:51)
Ну, может кто-нибудь всё-таки поможет сделать приклепленные задачи ;-)

Мы здесь именно помогаем решать задачи и отвечаем на конкретные вопросы, а решать вместо вас здесь никто не будет. Это ваша задача, а не наша, вам нужно решение, а не нам. Есть вопросы - мы на них ответим. А требования решений будут проигнорированы.


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Legolas
сообщение 25.05.2005 3:13
Сообщение #15


Новичок
*

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

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


Вот застрял на задаче "Г", вот ее код:

program z18d;
uses crt;
type mas=array[0..5,0..5] of integer;
var i,j,n,m,i1,j1,k,s:integer;
a:mas;
b:array [1..20] of integer;
begin
clrscr;
writeln('vvedite razmernost');
readln(n,m);

writeln('vvedite elementi');
for i:=1 to n do
for j:=1 to m do read(a[i,j]);

write('i=');readln(i1);
write('j=');readln(j1);
k:=1;
for i:=i1+1 to n-i1 do begin
for j:=j1+1 to m-j1 do begin
                s:=s;
                s:=s+a[i,j];
                b[k]:=a[i,j];inc(k);
                end;
                end;
writeln('s=',s);
{for i:=2 to n-1 do begin writeln;}
for i:=1 to k-1 do write(b[i],' ');
readkey
end.

Может что не так, не пойму...Надо как-то по-другому конец проги написать...

Сообщение отредактировано: volvo - 4.11.2010 15:09
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 25.05.2005 7:19
Сообщение #16


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

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

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


for i:=n downto n div 2 do
for j:=n-i+2 to i-1 do
inc(s,x[i,j]);


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


Новичок
*

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

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


Цитата(klem4 @ 25.05.05 15:19)
for i:=n downto n div 2 do
    for j:=n-i+2 to i-1 do
      inc(s,x[i,j]);


К сожалению, я не понял, в какое место проги вставить этот кусок...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.05.2005 8:08
Сообщение #18


Гость






Цитата(Legolas @ 25.05.05 3:13)
Может что не так, не пойму...Надо как-то по-другому конец проги написать...

Что значит "может"? Ты программу запускал? Она отработала? Решение совпало с тем, которое ДОЛЖНО получиться (на бумаге)? У нас тут проблемы с телепатией в последнее время.

Если есть ошибка - так и говори, если ты не уверен в правильности - тебе уже говорили как это проверяется...
 К началу страницы 
+ Ответить 
Legolas
сообщение 26.05.2005 3:35
Сообщение #19


Новичок
*

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

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


Цитата(volvo @ 25.05.05 16:08)
Если есть ошибка - так и говори, если ты не уверен в правильности - тебе уже говорили как это проверяется...

Да вот при разных значениях i и j s почему-то всегда равен нулю, не пойму, что не так...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.05.2005 8:04
Сообщение #20


Гость






Контрольный пример приведи... На какой матрице, и с какими значениями M, N, I и J ты это проверял ?
 К началу страницы 
+ Ответить 

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

 



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