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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция, вычисляющая объем цилиндра http://www.cyberforum.ru/cpp-beginners/thread718435.html
Доброй ночи! Помогите, пожалуйста, разобраться с задачей. Нужно найти Объем цилиндра при помощи функции. Параметрами функции должны быть высота и радиус этого самого цилиндра. #include <iostream> using namespace std; void Volume(double r, double h); void main() { double radius, height;
C++ Функция strtok_s Чем она отличается от strtok, и что значит третий аргумент в ней () Например, в этом примере // ConsoleApplication2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // the C strtok()/strtok_s() function in C++ code, using the C++ wrappers // In this program, a loop uses strtok_s() to print all the tokens (separated by blanks) http://www.cyberforum.ru/cpp-beginners/thread718433.html
C++ Использовать битове операций для обнуления всех бит, кроме последних четырёх
В задании имеется ввиду последние 4 бита старшего разряда. Как мне кажется, нужно воспользоваться оператором сдвига. Но вот как выяснить на сколько нужно сдвигать...
C++ Двумерный массив
вот код программы, пошагово объясните что тут выполнялось и особенно меня интересует что такое s вот задание Из матрицы размером NM получить вектор B, присвоив его k-му элементу значение 1, если элементы k-й строки матрицы упорядочены по убыванию, иначе 0. вот код int a,n,m,i,j,s,w; cout<<"Vvedite n,m <=100:"; cin>>n>>m; cout<<"Vvedite massiv:\n"; for (i=0; i<n; i++) for (j=0; j<m; j++)
C++ Структура "Студент" - прокомментировать код http://www.cyberforum.ru/cpp-beginners/thread718411.html
ребят помогите пожалуйста написать комментарий к данной программе...не могу разобраться((:-|:wall: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <dos.h> #include <iostream.h> #include <fstream.h> int zm=10,ji,m=0;
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;
}
 
Текущее время: 14:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru