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

Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Приведение типов http://www.cyberforum.ru/cpp-beginners/thread572774.html
В паскале можно привести типы: type ts = 0..9; chislo = array of ts; Как это сделать на С++?
C++ Вычислить инверсный гиперболический тангенс используя разложение в ряд Вычеслить инверсный гиперболический тангенс tangent arcth с заданной точностью е=0.001 используя разложение в ряд arcth х=х+х^3/3 +x^5/5+x^7/7+.... Сдесь х=0,2 Заранее спасибо! http://www.cyberforum.ru/cpp-beginners/thread572767.html
Напечатать числа в порядке невозрастания количеств цифр, входящих в запись чисел C++
Помогите пожалуйста составить программу: Даны целые числа a1, ..., an. Напечатать числа в порядке невозрастания количеств цифр, входящих в запись чисел. Тема: Одномерные массивы
Даны действительные числа θ и ε. Вычислить с заданной точностью C++
Даны действительные числа θ и ε. Вычислить с заданной точностью ε=10-4 сумму ряда: s = \left(1 - \frac{4\theta^2}{\pi^2}\right)\left(1-\frac{4\theta^2}{3^2\pi^2}\right)\left(1 - \frac{4\theta^2}{5^2\pi^2}\right)
C++ Указатель на функцию не работает. http://www.cyberforum.ru/cpp-beginners/thread572740.html
Вот код: #include <cmath> #include <iostream> using namespace std; double F1(double); double F2(double); void fun(double, double, double, double); double F1(double x) {
C++ Как передавать ссылку на структуру в map? Надо два контейнера один вектор со структурами второй мап с сылками на те структуры. Но вот проблема в map<int, Test*> itag после новой записи предыдущая ссылка ведет на непонятную структуру в которой itag->t = <неверный указатель а itag->i = переполнение; Я возможно не совсем понял основу. На манах просидел чета не найду подходящего примера. пробовал и через инссерт тоже самое. Подскажите... подробнее

Показать сообщение отдельно
Yentroistok
1 / 1 / 0
Регистрация: 25.02.2012
Сообщений: 59
13.05.2012, 10:32     Ошибка при вводе разного кол-ва строк и столбцов в матрицы. Динамич. матрицы/массивы
Дана матрица, размерность вводит пользователь, данные тоже. Осуществить сортировку вставками, массива, который будет получен из суммы модулей элементов строк.

код написал, но когда ввожу размер матрицы 2*3 или 3*4, т.е. не одинаковое кол-вао строк и столбцов, то вылетает ошибка в этом месте программы:

C++
1
(matrix[j][i] > 0)?Summa[j] += matrix[j][i]: Summa[j] += (-1)*matrix[j][i];    // молдули элементов строк, если число отрицательное
Не пойму почему. Можете объяснить, или подсказать как исправить?

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
 
//_____________________________Соритровка Вставками___________________________//
void insert_sort(int *a, int N) 
{
    for(int *q=a+1; q<a+N; q++) 
    {
        int x = *q;       // инициализируем временную переменную текущим значением элемента массива
        int *p = q-1;     //запоминаем индекс предыдущего элемента массива
        while(p>=a && *p>x)     // пока индекс не равен 0 и предыдущий элемент массива больше текущего
        
            *(p+1) = *p--;   // перестановка элементов массива
            *(++p) = x;
        
    }
}
//_____________________________Основная программа________________________________//
void main()
{
    setlocale(LC_ALL, "Russian");
 
//_____________Дана динамическая целочисленная матрица(выделяем память)________________________//
 
    unsigned int n, m;
    n = m = 0;
    printf("Введите n(ширину матрицы): ");
    scanf("%ud", &n);
    printf("Введите m(высоту матрицы): ");
    scanf("%ud", &m);
 
    int** matrix = new int* [n];
    int j;
    for (j = 0; j != n; ++j)
    {
        matrix[j] = new int [m];             
    }
 
//______________Задаём значения матрицы_____________________//
    unsigned int i_n, j_m;
    for (i_n = 0 ; i_n < n; i_n++)
    {
        for (j_m = 0; j_m < m; j_m++)
        {
            printf("Элемент matrix[%u][%u] = ", i_n, j_m);
            while (scanf_s("%d", &matrix[i_n][j_m])!=1)
                {
                    printf("Ошибка ввода, введите заново \n");
                    fflush(stdin);
                }
            
        }
    }    
    
//___________Вывод матрицы на экран____________________________//
    printf("Выводим матрицу на экран\n");
    for (i_n = 0 ; i_n < n; i_n++)
    {
        for (j_m = 0; j_m < m; j_m++)
        {
            printf(" %d ", *&matrix[i_n][j_m]);
        }
        printf("\n");
    }
    getch();
     
//_________Построение одномерного динамического массива, каждый эллемент\
    которого равен сумме элементов одной строки исходной матрицы.___________________//
    
    int *Summa = new int [m];
 
    unsigned int i;
    for (j = 0; j < m; ++j)                                     
    {
        Summa[j] = 0;
        for (i = 0; i < n; ++i)           
        {
            (matrix[j][i] > 0)?Summa[j] += matrix[j][i]: Summa[j] += (-1)*matrix[j][i];    // молдули элементов строк, если число отрицательное
        }
    }
 
    printf("Вывод массива с суммой элементов строк матрицы\n");
    for (j = 0; j < m; ++j)
    {
        printf(" %d ", *&Summa[j]);
    }
    getch();
 
// Вызов процедуры соритровки
//________________Освободить память от матрицы._______________________//
 insert_sort(Summa, n);
 
//_____________Вывод на экран отсортированного массива________________//
 printf("\nВывод массива с суммой элементов строк матрицы(После соритровки)\n");
    for (j = 0; j != m; ++j)
    {
        printf(" %d ", *&Summa[j]);
    }
    getch();
 
//___________Освобождаем память_______________//
    for (j = 0; j != n; ++j)
    {
        delete[] matrix[j];
    }
    delete[] matrix; 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru