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

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

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

 
 Ответить  Открыть новую тему 
> Матрица. Суммы диоганалей паралельных главной и побочной, Как сократить программу?
Евгений
сообщение 4.12.2010 4:08
Сообщение #1


Новичок
*

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

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


С заданием в принципе справился, но терзают меня смутные сомненья, что ее можно сделать и покороче заменив два цикла подсчета сумм паралельнных Главной(Побочной), на один , например через 2*М-1, но не как не могу справиться с агоритмом изменения индексов матрицы. Может есть у кого какие мысли на этот счет?

Program Massiv;
uses crt;
const M=3;
var
a: Array [1..M,1..M] of Integer;
sum: Integer;
j,I: Byte;
begin
textbackground(white);
clrscr;
textcolor(black);
Writeln('Введите ');
For I := 1 to M do
For j := 1 to M do
begin
Write(i,'-',j,' ');
Readln(a[i,j]);
end;
for i:= 1 to M do
begin
sum:=0;
for j:= 1 to i do
sum:= sum + a[j,M-i+j];
writeln(sum);
end;
for i:= 1 to M-1 do
begin
sum:=0;
for j:= 1 to M-i do
sum:= sum + a[i+j,j];
writeln(sum);
end;
for i:= 1 to M do
begin
sum:=0;
for j:= 1 to i do
sum:= sum + a[I+1-j,j];
writeln(sum);
end;
for i:= 1 to M-1 do
begin
sum:=0;
for j:= 1 to M-i do
sum:= sum + a[j+i,M+1-j];
writeln(sum);
end;
readln;
end.



Сообщение отредактировано: Lapp - 4.12.2010 6:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 4.12.2010 14:28
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Евгений @ 4.12.2010 4:08) *
С заданием в принципе справился, но терзают меня смутные сомненья, что ее можно сделать и покороче заменив два цикла подсчета сумм паралельнных Главной(Побочной), на один , например через 2*М-1, но не как не могу справиться с агоритмом изменения индексов матрицы. Может есть у кого какие мысли на этот счет?
Конечно, можно покороче )). И в первую очередь - за счет выбрасывания на фиг НЕНУЖНОЙ И ВРЕДНОЙ CRT со всеми ее процедурами и функциями (а САМАЯ вредная - ClrScr, брр..)

Про замену циклов говорить не буду. Мысли на этот счет - все поменять в корне и сделать НАМНОГО ПРОЩЕ. Весь подсчет умещается в три строки. Я вижу, что ты работаешь, поэтому даю тебе полное готовое решение. Разбирайся с ним и задавай вопросы, что неясно - ладно?
const
m=3;
n=2*m-1;
var
a: array [1..m,1..m] of integer;
b,c: array [1..n] of integer;
s1,s2,i,j: integer;

begin
// filling up the matrix
for i:=1 to m do for j:=1 to m do a[i,j]:=Random(10);
// show the matrix
for i:=1 to m do begin
for j:=1 to m do Write(a[i,j]:4);
WriteLn
end;
WriteLn;
// counting the sums
for i:=1 to m do for j:=1 to m do begin
Inc(b[j-i+m],a[i,j]);
Inc(c[i+j-1],a[i,j])
end;
// output the result
WriteLn('Main Diagonals Sums:');
for i:=1 to n do Write(b[i]:4);
WriteLn;
WriteLn('Side diagonals Sums:');
for i:=1 to n do Write(c[i]:4);
ReadLn
end.

Надеюсь, ты скачал и установил FreePascal. Если нет - давай, скачивай, или убери/переделай комментарии.
Успехов тебе.

P.S.
А от CRT - отвыкай. Это хуже, чем маленькие колесики сбоку у детского велосипеда. Когда действительно НУЖНО - тогда пользуй. А без дела менять цвет и чистить экран - это вызывает длинную тираду нехороших слов у тех, кто твою программу запускает.. ))


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Евгений
сообщение 4.12.2010 23:19
Сообщение #3


Новичок
*

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

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


Спасибо за помощь! Не все мне в этой программе понятно, но постараюсь разобраться, если что не пойму, надеюсь разъясните)).
Прошу строго меня не судить, если вопросы в вашем понимании покажутся глупыми. От получения задания до сессии, мне отведен месяц с небольшим и в голове каша из дискретной математики, алгебры логики, программирования и т.д., если что то не получается откладываю, занимаюсь другим, затем возращаюсь.
По поводу CRT , в задание есть условие об использовании очистки экрана и т.д., просто в каком виде ее написал в том и выложил, но на будующее учту.

Сообщение отредактировано: Евгений - 4.12.2010 23:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 4.12.2010 23:46
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Евгений @ 4.12.2010 23:19) *
в задание есть условие об использовании очистки экрана и т.д., просто в каком виде ее написал в том и выложил, но на будующее учту.
Ну, что сказать.. Мне жаль, что у тебя такие учителя. Очистку экрана нужно использовать только в тех задачах, где она необходима (например, там есть меню, управление курсором..) В консольных задачах свой стиль. Ты можешь себе представить, что ты печатаешь команду dir или cd - а она тебе бах и очистила все результаты твоей предыдущей работы? ))

Давай, разбирайся. Там все тривиально просто, только нужно мозги переключить с одного образа мышления на другой. Надо будет - объясню подробно, нет проблем )).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Credo
сообщение 5.12.2010 15:24
Сообщение #5


Пионер
**

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

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


Цитата
А от CRT - отвыкай

Нужно пользовотся со всеми модулями что облегчает жизнь которые когда то написали умненькие дяденьки smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.12.2010 15:33
Сообщение #6


Гость






CRT усложняет жизнь пользователю. Видеть не могу, когда начинающие программисты
1) раскрашивают свои программы, как елки, всеми цветами радуги
2) убирают с экрана то, что было на нем ДО запуска их супер-пупер-нужной (как им кажется) программы. МНЕ, пользователю, решать, какая программа нужная, а какая - нет. Та, которая считает себя важнее других (и убирает с экрана то, что было до ее запуска) сразу летит в мусорку. Умные дяденьки написали достаточно модулей, чтобы при старте программы сохранить содержимое экрана, а при финише - восстановить его, если уж на то пошло. А еще лучше - не трогать чужое. Вывел свои результаты и угомонись. Не надо убирать ЧУЖИЕ.
 К началу страницы 
+ Ответить 
Lapp
сообщение 6.12.2010 1:32
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


volvo, извини, в чем-то я повторю твои слова..

Цитата(Credo @ 5.12.2010 15:24) *
Нужно пользовотся со всеми модулями что облегчает жизнь которые когда то написали умненькие дяденьки smile.gif

Я не стану говорить, что не нужно пользоваться спичками или ножами. Но детям давать их все равно не буду. Потому что пользоваться нужно умеючи.

Если тебе НУЖНА эта функциональность - пожалуйста, используй. Если же ты просто прибалдел от розового цвета и все теперь раскрашиваешь - то ПТНФ (пошел ты на фиг). А когда ты делаешь ClrScr - ты стираешь ВСЕ (не только свое). А ты сотри все с диска, прежде чем записать туда свой файл - флаг тебе в руки. Во, крастота-то будет! Все чистенько, все в порядочке!

Кроме того, CRT нарушает стандартную модель доступа к файлам (что не написано в ее описании) и приводит к многим осложнениям при работе с диском.

Умные дяденьки придумали ядерную бомбу. Иди, используй..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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