Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BK93
0 / 0 / 0
Регистрация: 07.05.2017
Сообщений: 3
#1

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

07.05.2017, 03:07. Просмотров 122. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2017, 03:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как преобразовать массив в динамический? Массив вычисляет сумму элементов каждой диагонали матрицы (C++):

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

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

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

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

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

В каждой строке матрицы с отрицательным элементом на главной диагонали найти сумму элементов - C++
В каждой строке массива целых чисел с отрицательным элементом на главной диагонали найти: а) сумму элементов; б) наибольший элемент.

4
nd2
2384 / 1973 / 693
Регистрация: 29.01.2016
Сообщений: 6,422
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 / 9
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2017, 12:45
Привет! Вот еще темы с ответами:

Динамический массив, найти сумму элементов - C++
Помогите пожалуйста.В одномерном массиве состоящем из n целых элементов, вычислить. Сумму модулей элементов массива, расположенных после...

Динамический массив: подсчитать сумму четных элементов - C++
Создать динамический массив указателей для сохранения двумерного массива А в динамической памяти. Составить программу для подсчета суммы...

Построить динамический одномерный массив из элементов матрицы - C++
Дана динамическая целочисленная матрица.Построить динамический одномерный массив,каждый эллемент которого равен сумме элементов одной...

Дан целочисленный массив размером N. Преобразовать массив, увеличив длину каждой серии на один элемент - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { int n; int k=0; int p=0; int l=0; int...


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

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

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