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

Функция изменения размера динамического массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция, вычисляющая объем цилиндра http://www.cyberforum.ru/cpp-beginners/thread718435.html
Доброй ночи! Помогите, пожалуйста, разобраться с задачей. Нужно найти Объем цилиндра при помощи функции. Параметрами функции должны быть высота и радиус этого самого цилиндра. #include...
C++ Функция strtok_s Чем она отличается от strtok, и что значит третий аргумент в ней () Например, в этом примере // ConsoleApplication2.cpp: определяет точку входа для консольного приложения. // #include... http://www.cyberforum.ru/cpp-beginners/thread718433.html
C++ Использовать битове операций для обнуления всех бит, кроме последних четырёх
В задании имеется ввиду последние 4 бита старшего разряда. Как мне кажется, нужно воспользоваться оператором сдвига. Но вот как выяснить на сколько нужно сдвигать...
C++ Двумерный массив
вот код программы, пошагово объясните что тут выполнялось и особенно меня интересует что такое s вот задание Из матрицы размером NM получить вектор B, присвоив его k-му элементу значение 1, если...
C++ Структура "Студент" - прокомментировать код http://www.cyberforum.ru/cpp-beginners/thread718411.html
ребят помогите пожалуйста написать комментарий к данной программе...не могу разобраться((:-|:wall: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include...
C++ Ошибка чтения из потока Здравствуйте. Считываю слова в цикле из потока. while(!input.eof()) { input >> word; ..... } подробнее

Показать сообщение отдельно
fil1190
Сообщений: n/a
10.05.2014, 16:28
доброго времени суток всем!
Ребят вопрос похожий, только у меня двумерный динамический массив.
Функция возвращает мусор. Не могу понять почему не работает
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <vector>
#include <iostream>
using namespace std;
 
        int** matrixNew (int M, int N,  int **matrix)
{
    int mNew=0;
    mNew = M + 10;
    
    // создание
    int** newMatrix;
 
    newMatrix = new int*[mNew]; 
 
    for ( int i = 0; i < mNew; i++) 
    {
        newMatrix[i] = new int[N];
    }
 
 for (int i = 0; i < mNew; i++)
    { 
        for (int n=0; i < n; n++)
        {
                if(i < M)
                    newMatrix[i][n] = matrix[i][n];
                else
                    newMatrix[i][n] = 0;
        }
    }
 for (int i=0;i<M; i++)
 {
    delete [] matrix[i];
 }
        M=mNew;
        matrix = new int*[M];
           for ( int i = 0; i < mNew; i++) 
    {
        matrix[i] = new int[N];
    }
 
    
 
 printf ("HELLO");
 
 
 
    /* for (int i = 0; i < M; i++)
    { 
        for (int n=0; i < N; n++)
        {
                
            matrix[i][n] = newMatrix[i][n];
                
        }
    }*/
    
    return newMatrix;
 }
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    int M = 3, N = 5; // размеры
 
    int i=0, j, s=0; 
 
 
 
 
    // создание
        int** matrix;
 
      matrix = new int*[M]; 
 
    for ( i = 0; i < M; i++) 
    {
        matrix[i] = new int[N];
    }
    
    i=0;
 
    // ввод 
do
{
        if (i == M)
        {
            matrix = matrixNew( M, N, matrix);
        }
        for ( j = 0; j < N; j++) 
        { 
            cout << "Inter element " << "[" << i << "][" << j << "]  "; 
            cin >> matrix[i][j]; 
             if (matrix[i][j]==0) 
                    {
                        s++;
                    }
        }   
 
 
 i++;
 
} while(s<1);
 
        
 
        std::cout << std::endl; // вывод
        for ( i = 0; i < M; i++) 
        {
            for (  j = 0; j < N; j++) 
            { 
                cout <<  matrix[i][j];  
              
            } 
            printf("\n");
        }
 
 
 cout<< "END";
     cin>>s;
// Удаление
     for (int i=0; i<M; i++)
     {
        delete [] matrix[i];
     }
    return 0;
}
Программирую недавно, потому прошу строго не судить

Добавлено через 2 часа 13 минут
Спасибо всем кто мне не ответил. Проблему решил сам
Может кому-то пригодится код
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "stdafx.h"
#include <iostream>
#include "matrixNew.h"
 
 
using namespace std;
// функция увелечения размера двумерного динамического массива 
int** matrixNew (int M, int N,  int **matrix)
{
 
    printf("\n");
       
    // создание нового массива для копирования
    int** newMatrix;
 
    newMatrix = new int*[M]; 
 
    for ( int i = 0; i < M; i++) 
    {
        newMatrix[i] = new int[N];
    }
    
 
// копирование элементов старого массива в новый
    // и приравнивание оставшейся части нового массива 0
for (int i = 0; i < M; i++)
    { 
        for (int n=0; n < N; n++)
        {
            if (i<(M-10)) {
                    newMatrix[i][n] = matrix[i][n];
            }
            else {
                newMatrix[i][n]=0;
            }
            
        }
    }
 
// удаление старого массива
 for (int i=0;i<(M-10); i++)
 {
    delete [] matrix[i];
 }
        
// создание старого массива с новой размерностью            
        matrix = new int*[M];
 
        for ( int i = 0; i < M; i++) 
    {
        matrix[i] = new int[N];
    }
        
// вывод нового массива
        for (int i = 0; i < M; i++) 
        {
            for (int  j = 0; j < N; j++) 
            { 
                cout <<  newMatrix[i][j];  
              
            } 
            printf("\n");
        }
    
        // возвращение значения нового массива
    return newMatrix;
 }
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    int M = 3, N = 5; // размеры матрицы
 
    int i=0, j, s=0; 
 
    // создание матрицы
        
    int** matrix 
    matrix = new int*[M]; 
 
    for ( int i = 0; i < M; i++) 
    {
        matrix[i] = new int[N];
    }
    i=0;
 
    // ввод 
do
{
        if (i == M)
        {
            M+=10;
            matrix = matrixNew( M, N, matrix);
        }
        for ( j = 0; j < N; j++) 
        { 
            cout << "Inter element " << "[" << i << "][" << j << "]  "; 
            cin >> matrix[i][j]; 
             if (matrix[i][j]<0) 
                    {
                        s++;
                        break;
                    }
        }   
 
 
 i++;
 
} while(s<1);
 
        
 
        std::cout << std::endl; // вывод
        for ( i = 0; i < M; i++) 
        {
            for (  j = 0; j < N; j++) 
            { 
                cout <<  matrix[i][j];  
              
            } 
            printf("\n");
        }
 
 
 cout<< "END";
     cin>>s;
// Удаление массива
     for (int i=0; i<M; i++)
     {
        delete [] matrix[i];
     }
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru