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

Динамический Массив - C++

Восстановить пароль Регистрация
 
baygav
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 8
09.06.2010, 18:20     Динамический Массив #1
Попалось вот такое задание на подготовке к экзамену,к сожалению не смог понять как работать с динамическим массивом.
Добавить в массив строку,удалить столбец,распечатать,но все это надо сделать через динамический массив.
Прошу помощи,заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2010, 18:20     Динамический Массив
Посмотрите здесь:

C++ статический массив ----> динамический массив
ДИНАМИЧЕСКИЙ МАССИВ C++
C++ Динамический массив
Динамический массив C++
Динамический массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gleban_38
 Аватар для Gleban_38
7 / 6 / 1
Регистрация: 03.06.2010
Сообщений: 13
09.06.2010, 18:47     Динамический Массив #2
Ну вот, например, создание динамической матрицы:
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
#include "stdafx.h"
#include "math.h"
#include "conio.h"
#include <iostream>
#include <iomanip>
using namespace std;
void main()
{   
    int N=0,M=0;
    setlocale(LC_ALL,"Russian");
    cout<<"Введите размер массива:\nСтоки N=";
    cin>>N;
    cout<<"\nСтолбцы M=";
    cin>>M;
    // Делаем динамический массив под первую матрицу.
    int **Matrica= new int*[N+1];
    for(int i=0;i<N+1;i++)
        Matrica[i]= new int [M-1];
    // Набираем значения.
    for(int i=0; i<N+1; i++) 
        for(int j=0; j<M-1; j++)
            Matrica[i][j]=rand()%10;
    for(int i=0; i<N+1; i++) 
    {
        for(int j=0;j<M-1;j++)
            cout<<setw(4)<<Matrica[i][j];
        cout<<endl;
    }
    getch();
}
В принципе, пишете необходимое количество строчек и столбцов, потом заполняете и выводите на экран.
baygav
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 8
09.06.2010, 20:01  [ТС]     Динамический Массив #3
большое спасибо,теперь вопрос добавление строки и удаление столбца динамически отличается от обычного способа ?
Андрейка
407 / 211 / 22
Регистрация: 25.03.2009
Сообщений: 712
09.06.2010, 20:12     Динамический Массив #4
Mr.Sandman, delete к конце бы)
baygav
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 8
09.06.2010, 22:16  [ТС]     Динамический Массив #5
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
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <stdlib.h>
using namespace std;
const int max_razmer=255;
 
 
int **sozd_dmass(int n,int k)
{
    
    int **dmass=new int *[n];
    for (int i=0;i<n;i++)
        dmass[i]= new int [k];
    
    for (int i=0;i<n;i++)
     for (int j=0;j<k;j++)
        dmass[i][j]=rand()%10-5;
    
    return dmass;
}
int *sozd_stroki(int k)
{
    int *strk=new int [k];
    for (int i=0;i<k;i++)
        strk[i]=rand()%10-5;
    return strk ;
}
int **new_mass(int n, int k, int h, int *strk,int **matr)
{
    int i,j;
    int **new_mass=new int *[n];
    for (int i=0;i<n;i++){new_mass[i]= new int [n+1];}
    for (i=0;i<n;i++)
    {
        for (j=0;j<h;j++)new_mass[i][j]=matr[i][j];
        for (j=h-1;j<h;j++)new_mass[i][j]=strk[i];
        for (j=h;j<k+1;j++)new_mass[i][j]=matr[i][j-1];
    }
    return new_mass;
}
int ** stiranie(int **MATR,int n)
{
for(int i=0;i<n;i++)
delete MATR[i];
delete [] MATR;
return MATR;
}
int main()
{
    setlocale(LC_ALL,"russian");    
    int i=0,n,k,h;
    int **mass=0;
    int **MATR=0;
    int strk1[max_razmer];
    do
    {
        cout<<"\n1. Создание динамического массива"<<endl;
        cout<<"2. Печать массива."<<endl;
        cout<<"3. Создание строки"<<endl;
        cout<<"4. Вставка строки в динамический массив"<<endl;
        cout<<"5. Вывод нового динамического массива"<<endl;
        cout<<"6. Стирание массива"<<endl;
        cout<<"0. Выход"<<endl;
        cout<<"-> ";cin>>i;
        switch(i)
        {       case 1:
            {
                cout<<"\nВведите количество строк двумерного массива:";
                cin>>n;
                cout<<"\nВведите количество столбцов двумерного массива:";
                cin>>k;
                sozd_dmass(n,k);
                cout<<"\nМассив успешно создан"<<endl;
                
                break;
            }
       
        case 2:
            {
                cout<<"\nДвумерный массив:"<<endl;
                cout<<"\n";
                mass=sozd_dmass(n,k);
                for(int i=0;i<n;i++)
                {
                    for(int j=0;j<k;j++)
                    {
                        
                        cout<<mass[i][j]<<"\t";
                    }
                    cout<<"\n"<<endl;
                };
                break;          
            }
        
        case 3:
            {
                sozd_stroki(k);
                cout<<"\nСтрока успешно создана"<<endl;
                for(int i=0;i<k;i++)
                {
                    strk1[i]=*sozd_stroki(k);
                    cout<<"\n"<<strk1[i]<<endl<<"\n";
                };
                break;
            }
 
 
 
        case 4:
            {
                cout<<"\nВведите номер строки (от 1 до "<<n<<") куда добавить элементы:"<<endl;
                cin>>h;
                if (h<0&&h>n) {cout<<"Error. Не правильно выбран диапазон.";exit;}
                if (h>0&&h<n+1)
                {
                    new_mass(n,k,h,strk1,mass);
                }
                break;
            }
        case 5:
            {
                cout<<"\nДвумерный массив:"<<endl;
                cout<<"\n";
                MATR=new_mass(n,k,h,strk1,mass);
                for(int i=0;i<k;i++)
                {
                    for(int j=0;j<n+1;j++)
                    {
                        
                        cout<<MATR[i][j]<<"\t";
                    }
                    cout<<"\n"<<endl;
                };
                break;          
            }
        case 6:
            {
                stiranie(MATR,n);
                cout<<"\nСтирание прошло успешно"<<endl;
                break;
            }
 
        }
    }
    while(i!=0);    
    return 0;
}
Вопросег состоит в том,что у меня вместо строки создается столбец,помогите найти ошибку)
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,689
09.06.2010, 23:42     Динамический Массив #6
В функции вы передаете матрицу через указатели.
Дак зачем же вы ее возвращаете?
Yandex
Объявления
09.06.2010, 23:42     Динамический Массив
Ответ Создать тему
Опции темы

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