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

Непонтное поведение массива - 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 = (1*3 + 4*2)/4*3 = 11/12Напишите программу, запрашивающую у пользователя значения двух дробей, а затем выводящую результат, также записанный в форме дроби. #include <iostream> using namespace std;... http://www.cyberforum.ru/cpp-beginners/thread697891.html
C++ Проверка палиндромности
Дано целое число. Определить, является ли десятичная запись этого числа палиндромом (читается одинаково справа налево и слева направо, например 43543). помогите пожалуйста в написании кода или хотя бы блок-схемы алгоритма для реализации данного задания. Есть код определения пятизначного числа но он не совсем подходит требуется чтобы программа работала с любым числом а не только с пятизначным....
Калькулятор на Си. Как реализовать триногометрические ф-ции и функцию логарифм? C++
Написал код в котором надо вводить каждый елемент(первое число, знак операции, второе число, знак операции, 3... знак "=") по отдельности. + - * / работают, а вот sin... не работают. Во первых как сделать чтоб в програма могла проверить есть ли знаком операции не только символ но и строку? во вторых, если я введу sin то функция бралась от следущей введеной строки? #include <iostream> #include...
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
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
14.11.2012, 21:24     Непонтное поведение массива
Решил попрактиковаться с выделением памяти из этой статьи: Выделение памяти
Решил транспонировать матрицу.
Столкнулся с непонятной проблемой ( описание в комментах).
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru