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

После выхода из функции, чтобы матрица не изменялась - C++

Восстановить пароль Регистрация
 
Дантe
0 / 0 / 0
Регистрация: 28.04.2013
Сообщений: 28
11.10.2013, 13:55     После выхода из функции, чтобы матрица не изменялась #1
Как сделать так, чтобы передать матрицу в функцию, в функции матрицу изменить (поменять элементы матрицы симметрично относительно побочной диагонали) вывести её на экран, но чтобы после окончания функции массив был прежним. Массив - локальная переменная.
Написал код - массив изменяет правильно, но после завершения функции, в главную программу отдает измененный массив.

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
void sim(int *, int);
.
.
.
sim(*mas, S);
.
.
.
void sim(int *massiv, int N)
{
 int i,j,x,tmp,y,z;
     y=N-1;                            
     for (i=0,N--; j>0; i++,N--)          
     {
         for (j=0; j<N; j++) 
         {
             x=y-j;
             tmp = *(massiv+i*SIZE+j);
             *(massiv+i*SIZE+j) = *(massiv+x*SIZE+N);    
             *(massiv+x*SIZE+N) = tmp;
         }
     }
                printf("\nParveidotaa matrica (raditaaji):\n");
                for (i=0,y++; i<y; i++)                        
                {
                    for (j=0; j<y; j++)                   
                    {
                        printf("%4d", *(massivs+i*y+j));         
                    }
                    printf("\n");                                      
                }   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2013, 13:55     После выхода из функции, чтобы матрица не изменялась
Посмотрите здесь:

"Перепрыгивание" компилятора к части кода после выхода из функции C++
указатель не меняется после выхода из ф-ции C++
C++ Почему локальная переменная не уничтожается после выхода из функции
C++ Ошибка после выхода из программы
Как сделать так чтобы при изменении одной переменной изменялась другая? C++
C++ Почему переменная "d" не была удалена из стека после выхода из функции?
C++ Будет ли "жив" объект после выхода из функции
Ошибка после выхода из программы C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Algoritmer
 Аватар для Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 477
Записей в блоге: 1
11.10.2013, 14:02     После выхода из функции, чтобы матрица не изменялась #2
Ты передаешь указатель на твой исходный массив. В локальной функции скопируй матрицу и работай со скопированной. По-другому никак
Yandex
Объявления
11.10.2013, 14:02     После выхода из функции, чтобы матрица не изменялась
Ответ Создать тему
Опции темы

Текущее время: 08:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru