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

Увеличение динамического массива - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
Анна :)
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 15
06.06.2010, 17:58     Увеличение динамического массива #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
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
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <ctime>
#include <iomanip>
 
 
void inMas (int **&x,int m,int n) //инициализирует массив
{
    for (int i = 0; i<m ; i++)
        for (int j = 0; j<n ; j++)
            x[i][j] = rand()%70-40;
}
 
void printMas (int **&x,int m,int n) //выводит массив на экран
{
    for (int i = 0; i<m ; i++)
    {
        for (int j = 0; j<n ; j++)
            cout << setw(5) << x[i][j] << setw(5);
        cout << endl;
    }
}
 
int search(int **&x, int m, int n) //поиск положительного столбца
{
    int s;
    for (int j=0; j<n; j++)
    {
        s = 0; 
        for (int i=0; i<m; i++) 
            if (x[i][j]>0)  s++;
 
        if (s == m) return j;
    }
 
    return -1;
}
void copyStb (int *&x, int m, int n, int stb) //копирует 2-ой столбец в столбец после 1-го положительного столбца
{
    for (int i=0; i<m; i++)
            x[i][stb+1] = x[i][1];
}
 
void buildMas (int **&mas,int msize,int nsize)
{
    for (int i=0; i<msize; i++)
        mas[i] = new int [nsize];
}
void delMas (int **&x, int m)
{
    for (int i=0; i<m; i++)
    delete x[i];
    delete x;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
    srand(time(0));
    
    int msize,nsize;
    int stb;
 
    cout << "Введите число строк: " ;
    cin >> msize;
    cout << "Введите число столбцов: ";
    cin >> nsize;
 
    int **mas;
    mas = new int * [msize];
    buildMas(mas,msize,nsize);
 
    cout << "Прямоугольная матрица размерностью: " << msize << "*" << nsize << endl;
    inMas(mas,msize,nsize);
    printMas(mas,msize,nsize);
 
    cout << endl;
 
    stb = search(mas,msize,nsize);
 
    if (stb == -1) 
        cout << "Положительного столбца нет" << endl;
    else 
    {
                // тут нужна функция, которая расширяет массив на один столбец 
                copyStb(mas,msize,nsize,stb);
        cout << "Результирующая матрица: " << endl;
        printMas (mas,msize,nsize);
    }
    
    delMas(mas,msize);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2010, 17:58     Увеличение динамического массива
Посмотрите здесь:

C++ Увеличение максимального размера массива
C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Увеличение размера массива из элементов собственного класса C++
C++ Нормализация полинома, или увеличение массива?
Динамическое увеличение размера динамического массива C++
C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
Удаление динамического массива C++
Функция с применением динамического массива, чтобы размер массива увеличивался по мере необходимости C++
C++ Увеличение элемента динамического массива
C++ Почему при создании динамического массива через new ячейки массива имеют значение -842150451?
Увеличение размерности динамического массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZeroHour
0 / 0 / 0
Регистрация: 06.06.2010
Сообщений: 16
06.06.2010, 18:34     Увеличение динамического массива #2
функция realloc
Анна :)
0 / 0 / 0
Регистрация: 18.05.2010
Сообщений: 15
06.06.2010, 20:11  [ТС]     Увеличение динамического массива #3
А есть другие варианты? Это надо как бы вручную сделать.
Awful
 Аватар для Awful
12 / 12 / 0
Регистрация: 09.11.2009
Сообщений: 65
06.06.2010, 20:13     Увеличение динамического массива #4
открой библиотеку с этой функцией и скопируй)
Crudelis
Шаровик затейник
 Аватар для Crudelis
669 / 411 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
06.06.2010, 20:15     Увеличение динамического массива #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
int copyStb (int *&x, int m, int n, int stb) //копирует 2-ой столбец в столбец после 1-го положительного столбца
{
int **tem;
tem=new int *[m];
for (int i=0; i<msize; i++)
                tem[i] = new int [nsize];
for(int q=0;q<n;q++)
{
        for (int i=0; i<m; i++)
if(i==stolb)
{
tem[q][i]=x[q][i];
                        x[q][i] = x[q][i+1];
x[q][i+1]=tem[q][i];
i++;
}
}
return tem;
for (int i=0; i<msize; i++)
                delete [i]tem;
delete []tem;
 
}
в коде:

C++
1
mas=copyStb(mas,msize,nsize,stb);
Yandex
Объявления
06.06.2010, 20:15     Увеличение динамического массива
Ответ Создать тему
Опции темы

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