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

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

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

> Сумма элементов матрицы
Legolas
сообщение 17.05.2005 9:14
Сообщение #1


Новичок
*

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

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


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

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

Вот что я сделал:
Код

program matrix;
uses crt;
var a: array[1..10,1..10] of integer;
s,r: integer;
i,j,n: integer;
begin clrscr; textcolor(lightgreen);  randomize;
write(' Input razmer matrix> ');
readln(n);
for i:=1 to n do
begin
for j:=1 to n do begin
a[i,j]:=random(10);
write(a[i,j]:5,' ');
end;
writeln;

end;
write(' A: ');
s:=0;
for i:=1 to n do
for j:=1 to n do s:=s+a[i,j];
writeln(s);

write(' B: ');
s:=0;
for i:=1 to n do
for j:=1 to i do s:=s+a[i,j];
writeln(s);

write(' V: ');
s:=0;
for i:=1 to n div 2 + n mod 2 do
for j:=1 to n-i+1 do s:=s+a[i,j];
writeln(s);

write(' G: ');
s:=0;
for i:=n mod 2 + n div 2 to n do
for j:=n-i+1 to i do s:=s+a[i,j];
writeln(s);

write(' D: ');

write(' E:');

write(' J:');
s:=0;
for i:=1 to n div 2 + n mod 2 do
for j:=i to n-j+1 do s:=s+a[i,j];
writeln(s);

write(' Z: ');
s:=0;
for i:=1 to n div 2 + n mod 2 do
for j:=1 to n-j+1 do s:=s+a[i,j];
writeln(s);

write(' I: ');
s:=0;
for i:=1 to n do
for j:=1 to n-i+1 do s:=s+a[i,j];
writeln(s);

write(' K: ');
s:=0;
for i:=1 to n do
for i:=n-i+1 to n do s:=s+a[i,j];
writeln(s);

readln;
end.



У меня тут работает только B, G и I, в остальном баги….Помогите пожалуйста их исправить, а также дописать D и E.
Всем заранее благодарен. Goodbye;-)


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


Новичок
*

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

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


Вот решенная задача, может что-нибудь не верно, или всё o'key? smile.gif
Код

program z19;
uses crt;
var n,i,j,max:integer;
a:array [1..7,1..7] of integer;
z:byte;
begin
clrscr; textcolor(lightgreen); randomize;
repeat
write(' Vvedite razmernost(nechetnoe chislo)> ');
readln(n)
until odd(n)=true;
{writeln('vvedite elementi');}
for i:=1 to n do begin
for j:=1 to n do begin{read(a[i,j]);}
a[i,j]:=random(9);
write(a[i,j]:3,' ');
end;
writeln;
end;

writeln(' Menu (vibor cifry):');
repeat
writeln('1-a, 2-b, 3-c, 4-d, 5-e, 6-f, 7-g, 8-h, 9-i, 10-j');
readln(z);
case z of
1:begin
 for i:=1 to n do
 for j:=i to n do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
2:begin
 for i:=1 to n do
 for j:=1 to i do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
3:begin
 for i:=1 to ((n div 2)+1) do
 for j:=i to (n-i+1) do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
4:begin
 for i:=n downto ((n div 2)+1) do
 for j:=(n-i+1) to i do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
5:begin
 for i:=1 to ((n div 2)+1) do
 for j:=i to (n-i+1) do if a[i,j]>max then max:=a[i,j];
 for i:=n downto ((n div 2)+1) do
 for j:=(n-i+1) to i do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
6:begin
 for j:=1 to ((n div 2)+1) do
 for i:=j to (n-j+1) do if a[i,j]>max then max:=a[i,j];
 for j:=n downto ((n div 2)+1) do
 for i:=(n-j+1) to j do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
7:begin
 for j:=1 to ((n div 2)+1) do
 for i:=j to (n-j+1) do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
8:begin
 for j:=n downto ((n div 2)+1) do
 for i:=(n-j+1) to j do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
9:begin
 for j:=1 to n do
 for i:=1 to (n-j+1) do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;
10:begin
 for j:=1 to n do
 for i:=n downto (n-j+1) do if a[i,j]>max then max:=a[i,j];
 writeln('max=',max);max:=0;
 end;

end;

until readkey=#13;
readkey
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.05.2005 10:02
Сообщение #3


Гость






Ну, это может и не ошибка, но недочет по крайней мере:
a:array [1..7,1..7] of integer;
...
repeat
write(' Vvedite razmernost(nechetnoe chislo)> ');
readln(n)
until odd(n)=true;

Смотри, что ты делаешь: на нечетность ты проверяешь (хотя зачем = True добавлено, я так и не пойму, вполне можно обойтись и без него), а вот если я введу n = 9? Число нечетное, все по условию, но вот тут:
a[i,j]:=random(9);
могут быть проблемы...
 К началу страницы 
+ Ответить 
Legolas
сообщение 20.05.2005 3:39
Сообщение #4


Новичок
*

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

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


Цитата(volvo @ 19.05.05 18:02)
а вот если я введу n = 9? Число нечетное, все по условию, но вот тут:
a[i,j]:=random(9);
могут быть проблемы...

Это генерация случайных чисел от 0 до 9. Не буду же я вместо 9 вводить 100, на бумажке считать долго...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Legolas   Сумма элементов матрицы   17.05.2005 9:14
klem4   опять же... посмотри сюда http://forum.pascalnet.r...   17.05.2005 11:20
hiv   А зачем вы суммируете элементы массива в программ...   17.05.2005 12:09
Guest   О, чёрт не внимательно задачу прочитал, а всё-так...   18.05.2005 1:16
volvo   Legolas, ты долго будешь темы дублировать? Или по-...   17.05.2005 15:40
Legolas   Нет, не буду дублировать я темы, буду развивать с...   18.05.2005 1:19
hiv   Готового решения тебе здесь никто не даст. Хау...   18.05.2005 8:08
Legolas   Вот решенная задача, может что-нибудь не верно, ил...   19.05.2005 7:47
volvo   Ну, это может и не ошибка, но недочет по крайней м...   19.05.2005 10:02
Legolas   Это генерация случайных чисел от 0 до 9. Не буду ...   20.05.2005 3:39
volvo   Спасибо за информацию, я как-то этого не знал :a...   20.05.2005 8:04
Legolas   то есть лучше написать random(7)?   20.05.2005 8:18
hiv   Мдаааа.... По моему твой язык работает в десятки ...   20.05.2005 8:34
Legolas   Мне функция random нужна для ввода массива, прост...   20.05.2005 8:38
volvo   Ну так прогони ее и посмотри, все ли верно... Или ...   19.05.2005 8:03
Legolas   А зачем мне ее прогонять, я ее сам сделал, и не в...   19.05.2005 9:33
klem4   Наивный ты ;) Прогнать значит нарисовать матриц...   19.05.2005 9:40
hiv   Если программа работает - это не значит что у тебя...   19.05.2005 10:44
hiv   По моему это издевательство! Ты перечитывать п...   20.05.2005 8:44
volvo   По-моему, пора закрывать тему. Человек не хочет по...   20.05.2005 8:47


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

 



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