С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 83
1
Delphi 6-7

Работа с матрицами

19.04.2019, 11:50. Показов 1459. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Нужна помощь с задачей: Дана действительная матрица размерности (n*n) .Если среднее арифметическое элементов стоящих над главной диагональю больше суммы элементов стоящих на побочной диагонали, то поменять местами строки и столбцы (транспонировать матрицу). В противном случае матрицу оставить без изменения.
У меня, если арифметическое элементов стоящих над главной диагональю меньше суммы элементов стоящих на побочной диагонали, то матрица остаётся без изменений, т.е. как надо.
Но, если арифметическое элементов стоящих над главной диагональю меньше суммы элементов стоящих на побочной диагонали, то матрица как-то неправильно транспонируется.
Помогите, пожалуйста, исправить.
Вот мой исходный код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TForm1.PageControl1Change(Sender: TObject);
begin
n:=StringGrid1.ColCount;
k:=0;
sr:=0;
For i:=0 to n-1 do
For j:=0 to n-1 do
a[i+1,j+1]:=StrToInt(StringGrid1.Cells[j,i]);
For i:=1 to n-1 do
For j:=i+1 to n do
begin
k:=k+1;
sr:=sr+a[i,j];
end;
sr:=sr/k;
Edit2.Text:=('Среднее арифметическое элементов над главной диагональю=' + FloatToStr(sr));
j:=n+1;
For i:=1 to n do
begin
j:=j-1;
s:=s+a[i,j];
end;
Edit3.Text:=('Сумма элементов побочной диагонали=' + IntToStr(s));
if sr>s then begin
For i:=1 to n do
For j:=1 to n do begin
b:=a[i,j];
a[i,j]:=a[j,i];
a[j,i]:=b;
end;
For i:=0 to n-1 do
For j:=0 to n-1 do
StringGrid1.Cells[j,i]:=IntToStr(a[j+1,i+1]);
end;
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2019, 11:50
Ответы с готовыми решениями:

Работа с матрицами
"Дана матрица. Сформировать одномерный массив, где на нечетных местах находится сумма,...

Работа с матрицами
Здраствуйте нужна помощь. вот задание ---Среди столбцов заданной матрицы найти столбец , сумма...

Работа с матрицами
всем привет парни. сижу мучаюсь ничего в голову не лезет. выручайте. есть программа, ее нужно...

Работа с матрицами
Задача с матрицами. 1. Дана матрица размера M на N. Поменять местами левую нижнюю и верхнюю...

9
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
19.04.2019, 12:51 2
Delphi
1
StringGrid1.Cells[j, i] := IntToStr(a[i + 1, j + 1]);
0
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 83
19.04.2019, 14:21  [ТС] 3
Что-то не помогло. Я не знаю, может тут ещё в чём-то проблема?
0
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
19.04.2019, 17:11 4
А, стоп... Вам же транспонированную надо вывести... Тогда так: вместо строк
1. Строки 25-33 - убрать
2. Вместо них написать:
Delphi
1
2
3
for i := 0 to n - 1 do
  for j := 0 to n - 1 do
   StringGrid1.Cells[i, j] := IntToStr(A[i + 1, j + 1]);
0
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 83
22.04.2019, 12:57  [ТС] 5
Сделал. В общем - матрица транспонируется в любом случае, даже если условие не выполняется.
0
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
22.04.2019, 16:06 6
Цитата Сообщение от Shepard_1998 Посмотреть сообщение
Сделал. В общем - матрица транспонируется в любом случае, даже если условие не выполняется.
Дык показывайте, что сделали... А то я сделаю - и у меня условие выполнятся будет... Мне же стыдно: как так, я Ваш код повторить не смог...
0
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 83
22.04.2019, 16:16  [ТС] 7
Вот код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
procedure TForm1.PageControl1Change(Sender: TObject);
begin
n:=StringGrid1.ColCount;
k:=0;
sr:=0;
For i:=0 to n-1 do
For j:=0 to n-1 do
a[i+1,j+1]:=StrToInt(StringGrid1.Cells[j,i]);
For i:=1 to n-1 do
For j:=i+1 to n do
begin
sr:=sr+a[i,j];
k:=k+1;
end;
sr:=sr/k;
Edit2.Text:=('Среднее арифметическое элементов над главной диагональю=' + FloatToStr(sr));
j:=n+1;
For i:=1 to n do
begin
j:=j-1;
s:=s+a[i,j];
end;
Edit3.Text:=('Сумма элементов на побочной диагонали=' + IntToStr(s));
if sr>s then begin
for i:=0 to n-1 do
for j:=0 to n-1 do
StringGrid1.Cells[i, j]:=IntToStr(a[i+1,j+1]);
end;
end;
0
Модератор
9644 / 6251 / 2426
Регистрация: 21.01.2014
Сообщений: 26,667
Записей в блоге: 3
22.04.2019, 16:26 8
1. Где и как объявлен массив а[]??? Если пользователь сам задает размер матрицы - соответственно, и массив должен быть динамическим! У Вас в коде этого нет.
2. Ну вот задам я массив 50х50... Я что, все эти 2500 элементов должен руками вводить? Да не ошалеть ли??? Генератор случайных чисел на что придумали?
3. Где вообще объявлены (и объявлены ли вообще) все переменные, которые используются в Вашем коде? Глобально? (фу, какая пошлость...) или как?
4. Как это Вы в одинарном цикле считаете сумму элементов над главной диагональю?...

Одним словом - бред!!!
0
0 / 0 / 0
Регистрация: 15.04.2017
Сообщений: 83
22.04.2019, 16:34  [ТС] 9
все переменные и матрица описаны как глобальные переменные

Добавлено через 1 минуту
Насчёт генератора, в заданиях требуется чтобы массив, матрица или не важно что вводилось ручками в нужный компонент. Такие вот требования.

Добавлено через 2 минуты
Насчёт цикла с подсчётом суммы я посмотрю. Ещё какие - нибудь косяки вы у меня нашли?
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
22.04.2019, 17:55 10
Цитата Сообщение от Shepard_1998 Посмотреть сообщение
все переменные [...] описаны как глобальные переменные
Это плохо. Как минимум, переменные цикла - i, j - должны быть локальными.
Цитата Сообщение от Shepard_1998 Посмотреть сообщение
в заданиях требуется чтобы массив, матрица или не важно что вводилось ручками в нужный компонент.
И тем не менее, массив должен быть динамическим:
Delphi
1
a: array of array of Integer;
Просто после задания N напишите:
Delphi
1
SetLength(a, n, n);
И индексация у него будет начинаться с 0, то есть уберите эти i+1,j+1... Просто a[i, j], как и в стрингриде.
Среднее арифм.над главной диагональю:
Delphi
1
2
3
4
5
6
7
8
9
10
11
count := 0;
sumG := 0;
for i := 0 to n - 1 do
  for j := 0 to n - 1 do
    if i < j then
    begin
      sumG := sumG + a[i, j];
      Inc(count); 
    end;
if count > 0 then
  avg := sumG / count;   // наше среднее
Сумма на побочной диагонали:
Delphi
1
2
3
4
5
sumP := 0;
for i := 0 to n - 1 do
  for j := 0 to n - 1 do
    if i + j = n + 1 then
      sumP := sumP + a[i, j];
Теперь объедините эти два цикла в один, дальше за пределами цикла проводите уже проверку и вывод результата.
0
22.04.2019, 17:55
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2019, 17:55
Помогаю со студенческими работами здесь

работа с матрицами
здравствуйте! решите примеры пожалуйста. А то я совсем не разбираюсь в delphi. 1.Даны...

Работа с матрицами
НУЖНО ТОЖЕ САМОЕ ТОЛЬКО БЕЗ ИСПОЛЬЗОВАНИЯ ГЛОБАЛЬНЫХ ПАРАМЕТРОВ (ПОДПРОГРАММЫ ДОЛЖНЫ ОБМЕНИВАТЬСЯ...

Работа с матрицами
Будьте так добры написать программу на Delphi. В двухмерном массиве n на m найдите среднее...

Работа с матрицами
Доброго времени суток! Может кто-то сможет подсказать по поводу следующего: Задана матрица...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru