Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
BK93
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 3
1

Как преобразовать массив в динамический? Массив вычисляет сумму элементов каждой диагонали матрицы

07.05.2017, 03:07. Просмотров 396. Ответов 4
Метки нет (Все метки)

Ошибка : Вызвано исключение по адресу 0x00BB2F4F в Проект6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE05.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# include <iostream>
# include <time.h>
# include <iomanip>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int n;
    int m;
    int k;
    cout << "Введите количество строк A" << endl;
    cin >> n;
    cout << "Введите количество столбцов A" << endl;
    cin >> m;
    k = n + m;
    srand((unsigned)time(NULL));
    int **A = new int*[n];
    for (int i = 0; i < n; i++)
    {
        A[i] = new int[m];
    }
    cout << "матрица А" << endl;
    int i, j, q;
 
    //инициализация массива
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            A[i][j] = rand() % 100;
            cout << setw(2) << A[i][j] << ' ';
        }
        cout << endl;
    }
    cout << endl;
    int *s = new int[k];// создание динамического массива целых чисел 
 
    //Верхняя часть диагонали
    for (i = 0; i < n; i++)
        for (j = 1 + i, q = 0; j < m - 1, q < m - 1; j++, q++)
            s[i] += A[q][j];
    //Нижняя часть диагонали
    for (i = 0; i < n; i++)
        for (j = 1 + i, q = 0; j < m - 1, q < m - 1; j++, q++)
            s[i + m - 1] += A[j][q];
 
    //Вывод сумм диагоналей
    for (i = 0; i < (n - 1) * 2; i++) {
        cout << "Сумма диагонали" << i + 1 << " = " << setw(4) << s[i] << endl;
        if (i == n - 2) {
            cout << endl;
        }
    }
    system("pause");
    return 0;
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2017, 03:07
Ответы с готовыми решениями:

Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали.
Ребят не понимаю я с++ Дали создать программу Помогите пожалуйста Найти среднее арифметическое...

Массив: Вычислить сумму элементов главной диагонали матрицы.
1.Вычислить сумму элементов главной диагонали матрицы. 2.Сосчитать количество отрицательных...

Найти сумму элементов в каждой строке матрицы, результат записать в массив
Написать программу на языке С ++ для исследования описания и использования двумерных массивов в...

Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int kol_vo(int **a, int n, int...

Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной диагонали
Дан двухмерный массив.Найти сумму элементов побочной диагонали и сумму элементов главной...

4
nd2
3099 / 2593 / 1134
Регистрация: 29.01.2016
Сообщений: 8,690
07.05.2017, 03:57 2
Цитата Сообщение от BK93 Посмотреть сообщение
//инициализация массива
C++
1
2
3
for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
        A[i][j] = rand() % 100;
И куда m делось?
0
BK93
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 3
07.05.2017, 11:33  [ТС] 3
Цитата Сообщение от nd2 Посмотреть сообщение
C++Выделить код
1
2
3
for (i = 0; i < n; i++) {
* * for (j = 0; j < n; j++) {
* * * * A[i][j] = rand() % 100;
И куда m делось?
Цитата Сообщение от nd2 Посмотреть сообщение
куда
спасибо за поправку, но исправление не помогает
//Нижняя часть диагонали
for (i = 0; i < n; i++)
for (j = 1 + i, q = 0; j < m - 1, q < m - 1; j++, q++)
s[i + m - 1] += A[j][q]; // участок кода с ошибкой: Вызвано исключение по адресу 0x00BB2F4F в Проект6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE05.
0
Kant
33 / 33 / 18
Регистрация: 15.05.2013
Сообщений: 236
07.05.2017, 12:27 4
Создать динамически матрицу, заполнить ее случайными числами, скопировать все элементы на диагоналях в отдельный динамический массив, вычислить сумму каждой диагонали матрицы.

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <time.h>
#include <iostream>
#include <iomanip>
#include <string>
 
int main()  {
  setlocale(LC_ALL, "rus");
  srand((unsigned)time(NULL));
 
  int rows = 0;
  std::cout << "Введите количество строк A" << std::endl;
  std::cin >> rows;
 
  int columns = 0;
  std::cout << "Введите количество столбцов A" << std::endl;
  std::cin >> columns;
 
  // выделиние памяти
  int **A = new int*[rows * columns];
  for (int i = 0; i < rows; ++i) { A[i] = new int[columns]; }
 
  // инициализация массива
  // вывод в консоль
  std::cout << "матрица А" << std::endl;
  for (int i = 0; i < rows; ++i) {
    for ( int j = 0; j < columns; ++j) {
      A[i][j] = rand() % 9 + 1;
      std::cout << std::setw(2) << A[i][j] << ' ';
    }
    std::cout << std::endl;
  }
  std::cout << std::endl;
 
 
  // выделяем память под две диагонали
  int count_element_in_2_diag = rows * 2;
  int *s = new int[count_element_in_2_diag];
 
  // Верхняя часть диагонали
  for (int i = 0; i < rows; ++i) { s[i] = A[i][i]; }
 
  // Нижняя часть диагонали
  for (int i = 0; i < rows; ++i) { s[rows + i] = A[i][rows - 1 - i]; }
 
 
  // Вывод сумм диагоналей
  int sum = 0;
  std::cout << "Сумма первой диагонали" << std::endl;
  for (int i = 0; i < rows; ++i) {
    std::cout << std::to_string(s[i]);
    if (i != rows - 1) { std::cout << " + "; }
    sum += s[i];
  }
  std::cout << " = " << sum << std::endl;
 
  sum = 0;
  std::cout << "Сумма второй диагонали" << std::endl;
  for (int i = rows; i < count_element_in_2_diag; ++i) {
    std::cout << std::to_string(s[i]);
    if (i != count_element_in_2_diag - 1) { std::cout << " + "; }
    sum += s[i];
  }
  std::cout << " = " << sum << std::endl;
 
 
 
  for (int i = 0; i < rows; ++i) { delete[] A[i]; }
  delete[] A;
 
  delete[] s;
 
  system("pause");
  return 0;
}
1
BK93
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 3
08.05.2017, 12:45  [ТС] 5
спасибо за код, но нужно было вычислить сумму элементов каждой диагонали матрицы параллельных главной диагонали
например:
1 2 3 4
5 8 9 6
7 4 3 2
3 2 5 7


2 + 9 + 2 = 13
3 + 6 = 9
4 = 4
5 + 4 +5 = 14
7 + 2 = 9
3 = 3
sum = 13, 9, 4, 14, 9, 3

Добавлено через 22 часа 51 минуту
можно сделать так чтобы размерность динамической матрицы была N x M, например: 4 x 6,
и вычислить сумму элементов каждой диагонали (за исключением главной и побочной диагоналей) матрицы параллельных главной диагонали
например:
1 2 3 4 7 9
5 8 9 6 4 3
7 4 3 2 1 0
3 2 5 7 5 6


2 + 9 + 2 + 5= 18
3 + 6 + 1 + 6 = 16
4 + 4 + 0 = 8
7 + 3 = 10
9 = 9
5 + 4 +5 = 14
7 + 2 = 9
3 = 3
sum = 18, 16, 8, 10, 9; 14, 9, 3
0
08.05.2017, 12:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2017, 12:45

Массив: Получить массив В, где элементами являются суммы элементов строк матрицы А, расположенных до главной диагонали.
Дана целочисленная квадратная матрица А. Получить массив В, элементами которого являются суммы...

Для каждой строки матрицы подсчитать сумму элементов, вне заданного интервала, записать данные в новый массив
Дан массив размером n×n, элементы которого целые числа. Замечание. Для хранения массив n×n...

Найти сумму элементов каждой диагонали матрицы, параллельной побочной
Дана квадратная матрица A порядка M. Найти сумму элементов каждой ее диагонали, параллельной...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.