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

Непонтное поведение массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компилятор для C++ http://www.cyberforum.ru/cpp-beginners/thread697895.html
Подскажите компилятор C++. с поодержкой всех возможностей шаблонов (желательно с редактором) Не среду громоздкую, а чисто под кансоль
C++ подскажите в чем ошибка только сегодня начал знакомство и вот уже проблемка)подскажите пожалуйста в чем ошибка)) Две дроби a/b и c/d можно сложить следующим образом:a/b + c/d = (a*d + b* c)/(b*d)Например, 1/4 + 2/3 =... http://www.cyberforum.ru/cpp-beginners/thread697891.html
C++ Проверка палиндромности
Дано целое число. Определить, является ли десятичная запись этого числа палиндромом (читается одинаково справа налево и слева направо, например 43543). помогите пожалуйста в написании кода или...
Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? C++
Написал код в котором надо вводить каждый елемент(первое число, знак операции, второе число, знак операции, 3... знак "=") по отдельности. + - * / работают, а вот sin... не работают. Во первых как...
C++ Как считать матрицу 3*3 из файла если он там задан неправильно http://www.cyberforum.ru/cpp-beginners/thread697881.html
как считать матрицу 3*3 из файла если он там задан неправильно например в файле 4 5 6 7 8 1 2 3 4 9 8 7 а должно считать 4 5 6 1 2 3 9 8 7
C++ 2 задачи по строкам 1)Дан текст.Первое по порядку самое короткое слово текста заменить первым по порядку самым длинным словом, если их длинны не совпадают. 2)Дан текст.Удалить все слова, которые начинаются на одну и ту... подробнее

Показать сообщение отдельно
Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63

Непонтное поведение массива - C++

14.11.2012, 21:24. Просмотров 224. Ответов 6
Метки (Все метки)

Решил попрактиковаться с выделением памяти из этой статьи: Выделение памяти
Решил транспонировать матрицу.
Столкнулся с непонятной проблемой ( описание в комментах).
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
#include <iostream>
using namespace std;
void transpose(int*** matrix, const int& N)
{
    for(int i = 0; i < N - 1; ++i) {
        for(int j = i + 1; j < N; ++j) {
            //Меняет местами элементы нормально
            swap(*(**matrix + N * i + j), *(**matrix + N * j + i));
            
 
            // swap(*matrix[i][j], *matrix[j][i]); Не работает!
            // Абсолютно непонятное мне поведение 
            //(*matrix[0][1] = 4), почему так получается?
        }
    }
}
int main(int argc, char* argv[])
{
    int N = 0; //matrix size (NxN)
    cin >> N;
 
    int** matrix = new int*[N];
    matrix[0] = new int[N*N];
    for(int i = 1; i < N; ++i)
        matrix[i] = matrix[i - 1] + N;
 
    for(int i = 0; i < N; ++i)
        for(int j = 0; j < N; ++j)
            cin >> matrix[i][j]; //{3 1 2 3 4 5 6 7 8 9}
 
    { //Вывод матрицы
            for(int i = 0; i < N; ++i) {
                for(int j = 0; j < N; ++j)
                    cout << matrix[i][j] << " ";
                cout << endl << endl;
            }
    }
 
    transpose(&matrix, N);
 
    { //Вывод матрицы
        for(int i = 0; i < N; ++i) {
            for(int j = 0; j < N; ++j)
                cout << matrix[i][j] << " ";
            cout << endl << endl;
        }
    }
    delete [] matrix[0];
    delete [] matrix;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.