Форум программистов, компьютерный форум CyberForum.ru

сумма элементов матрицы - C++

Восстановить пароль Регистрация
 
Paulsan
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 14
07.01.2012, 00:44     сумма элементов матрицы #1
Здравствуйте. Такая задача: В массиве А[m][n] (m = n) сумму элементов над главной диагональю поделить на сумму элементов под главной диагональю. Элементы под глав-ной диагональю рассортировать по убыванию.
Помогите найти суммы элементов.

C++
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
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian"); 
    int n; //размерность матрицы
    int i, j;
    cout<<"Введите размерность матрицы: ";
    cin>>n;
    int **A = new int* [n];  
        for (i=0; i<n; i++)
        {
            A[i]=new int[n];
            for (j=0; j<n; j++)
            {
                A[i][j] = rand()%10; //заполняем матрицу случайным образом 
            }
        }
          cout<<"Сформированная матрица: "<<endl;
            for (i=0; i<n; i++)
        { cout<<endl;
            for (j=0; j<n; j++)       //вывод исходного массива
          cout<<A[i][j]<<" ";
        }  
          cout<<endl;
          cout<<endl;
          system("pause");
}
Добавлено через 45 минут
сумму находит правильно, но не вычисляет частное сумм, подскажите в чём ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 int underdiagonal, overdiagonal;
 
underdiagonal = 0; //сумма элементов под диагональю
overdiagonal = 0; //сумма элементов над диагональю
 
for (i=0; i<n; i++){
  for (j=0; j<n; j++){
    if (i>j){
      underdiagonal += A[i][j];
    }
    if (i<j){
      overdiagonal += A[i][j];
    }
  }
}
      cout<<"Сумма элементов над главной диагональю: "<<overdiagonal<<endl;
      cout<<"Сумма элементов под главной диагональю: "<<underdiagonal<<endl;
      float sum;
      sum=overdiagonal/underdiagonal;
      cout<<"Частное сумм: "<<sum;
      cout<<endl;
Добавлено через 33 минуты
Разобрался. А подскажите, пожалуйста, как рассортировать элементы под главной диагональю по убыванию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2012, 00:44     сумма элементов матрицы
Посмотрите здесь:

Выполнить сортировку элементов в той строке матрицы сумма элементов в которой максимальная C++
C++ Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки
C++ Для матрицы найти такие k и n, что сумма элементов k-столбца совпадает с суммой элементов n-й строки
Удалить из матрицы A все строки, сумма элементов которых четна, а из матрицы B – строки, сумма элементов которых нечетна(функции) C++
C++ Если сумма индексов каких-либо двух элементов матрицы, расположенных ниже главной диагонали, равна минимальному элементу матрицы, то..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
07.01.2012, 00:47     сумма элементов матрицы #2
Цитата Сообщение от Paulsan Посмотреть сообщение
А подскажите, пожалуйста, как рассортировать элементы под главной диагональю по убыванию.
запихнуть в отдельный массив, отсортировать, затем вернуть обратно.
asm
 Аватар для asm
62 / 35 / 1
Регистрация: 05.10.2011
Сообщений: 137
07.01.2012, 00:54     сумма элементов матрицы #3
Цитата Сообщение от Paulsan Посмотреть сообщение
int underdiagonal, overdiagonal;
Цитата Сообщение от Paulsan Посмотреть сообщение
float sum;
sum=overdiagonal/underdiagonal;
необходимо привести типы
C
1
sum=(float)overdiagonal/(float)underdiagonal;
или
C
1
int sum; // неудачный вариант
Paulsan
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 14
07.01.2012, 00:58  [ТС]     сумма элементов матрицы #4
Цитата Сообщение от OstapBender Посмотреть сообщение
запихнуть в отдельный массив, отсортировать, затем вернуть обратно.
А можно поподробней что именно и куда пихать? )
asm
 Аватар для asm
62 / 35 / 1
Регистрация: 05.10.2011
Сообщений: 137
07.01.2012, 01:13     сумма элементов матрицы #5
считаешь сколько элементов под диагональю, например, так
C
1
2
3
4
5
6
7
long size_arr=0; 
for (i=0; i<n; i++){
   for (j=0; j<n; j++){
      if (i>j){
         underdiagonal += A[i][j];
         size_arr++;
      }...
выделяешь память под новые элементы, потом копируешь что под гл.диаг. в выделенный участок памяти, потом
Цитата Сообщение от OstapBender Посмотреть сообщение
отсортировать, затем вернуть обратно
Добавлено через 3 минуты
и не забывай очищать память от
Цитата Сообщение от Paulsan Посмотреть сообщение
int **A = new int* [n];
Paulsan
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 14
07.01.2012, 10:54  [ТС]     сумма элементов матрицы #6
Спасибо, буду пытаться ))

Добавлено через 9 часов 35 минут
Разобрался, только по программе у меня возник вопрос, почему-то матрица заполняется одними и теми же числами, как это можно подправить?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
07.01.2012, 11:27     сумма элементов матрицы #7
Использовать функцию srand для засева случайных чисел, например вот так srand( time( NULL )). Нужно использовать всего один раз, перед использованием функции rand.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2012, 11:46     сумма элементов матрицы
Еще ссылки по теме:

C++ Максимальная сумма элементов строки / минимальная сумма элементов столбца матрицы

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

Или воспользуйтесь поиском по форуму:
Paulsan
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 14
07.01.2012, 11:46  [ТС]     сумма элементов матрицы #8
Цитата Сообщение от Toshkarik Посмотреть сообщение
Использовать функцию srand для засева случайных чисел, например вот так srand( time( NULL )). Нужно использовать всего один раз, перед использованием функции rand.
Спасибо! всё получилось. ))
Yandex
Объявления
07.01.2012, 11:46     сумма элементов матрицы
Ответ Создать тему
Опции темы

Текущее время: 23:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru