Форум программистов, компьютерный форум 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)Дан текст.Удалить все слова, которые начинаются на одну и ту же букву. сделать при помощи функций обработки строк и без данных функций(то есть работать только с массивом, не применяя функции обработки строк) заранее спасибо, друзья... подробнее

Показать сообщение отдельно
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 21:34     Непонтное поведение массива
Прокомментировал изменения
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
#include <iostream>
using namespace std;
void transpose(int** matrix, const int& N)//Зачем передавать как ***? Если Вы не собираетесь менять сам указатель matrix?
{
    for(int i = 0; i < N; ++i) {
        for(int j = i; j < N; ++j) {
            //Меняет местами элементы нормально
            //swap(*(**matrix + N * i + j), *(**matrix + N * j + i));
            
 
            swap(matrix[i][j], matrix[j][i]);//Ну тут понятно
            // Абсолютно непонятное мне поведение 
            //(*matrix[0][2] = 4), почему так получается?
        }
    }
}
int main(int argc, char* argv[])
{
    int N = 2; //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;
     system("pause");
    return 0;
}
 
Текущее время: 03:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru