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

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

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

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


Новичок
*

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

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


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

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

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


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


Профи
****

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

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


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


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Гость






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

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

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

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

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


Новичок
*

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

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


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


Гость






Хорошо... Я переформулирую вопрос. Ты можешь к МАТРИЦЕ обращаться с одним индексом? Или все-таки только к ВЕКТОРУ? В задании у тебя как раз один индекс при обращении к B...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


Новичок
*

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

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


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

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


Профи
****

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

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


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

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

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

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


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -


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


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

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

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


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


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


Новичок
*

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

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


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


Профи
****

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

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


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

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


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






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

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

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


Новичок
*

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

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


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

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


Гость






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

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

 





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