Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/55: Рейтинг темы: голосов - 55, средняя оценка - 4.78
1 / 1 / 2
Регистрация: 25.02.2016
Сообщений: 141
1

Создание двумерного динамического массива через функции

02.04.2016, 21:05. Показов 11191. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться с программой. После вхождения в функцию Fill_mas, я выхожу из программы и вводить элементы отказывается. Даже если напрямую в функцию menu задать заполнение и вывод массива, тоже самое(
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
# include <iostream>
# include <stdlib.h>
# include <time.h>
# include <conio.h>
 
using namespace std;
 
int** Make( int row, int col);
void Fill_mas(int** mas, int &row, int &col);
void menu(int **mas, int &row, int &col);
 
void main()
{
    srand(time(NULL));
    setlocale(0, "");//русс.язык
    int **mas = NULL;
    int row = 0;
    int col = 0;
    menu(mas, row, col);
}
 
 
int** Make(int row, int col){
    int**mas = new int*[row];
    for (int i = 0; i < row; i++){
        mas[i] = new int[col];
    }
    cout << "Введите размер двумерного динамического массива\n";
    do{
        cout << "Колчество строк: ";
        cin >> row;
        cout << "Количесво столбцов: ";
        cin >> col;
        if (row < 1 || col < 1)
            cout << "\nОшибка!!! размерность массива должна быть больше 0. \n\nВведите другое значение: ";
    } while (row < 1 || col < 1);
    return mas;
}
void Fill_mas(int** mas, int &row, int &col){
    //int m = 0, int n = 0;
    int var;
 
    cout << "Числа ввести случайным образом из с клавиатуры?\n";
    do{
        cout << "1 - слуйным образом;\n2 - с клавиатуры\n";
        cin >> var;
        if (var < 1 || var > 2)
            cout << "Введи правильное значение\n";
    } while (var < 1 || var > 2);
    switch (var){
    case 1:
        /*mas = new int*[row];
        for (int i = 0; i < row; i++)
            mas[i] = new int[col];*/
        
        for (int i = 0; i < row; i++){
            for (int j = 0; j < col; j++){
                mas[i][j] = rand() % 90 + 10;
                //  cout << mas[i][j] << " ";
            }
        //  cout << "\n";
        }
        break;
    case 2:
    /*  mas = new int*[row];
        for (int i = 0; i < row; i++)
            mas[i] = new int[col];*/
        for (int i = 0; i < row; i++){
            for (int j = 0; j < col; j++){
                cout << "[ " << i << "," << j << " ] = ";
                cin >> mas[i][j];
                //  cout << mas[i][j] << " ";
            }
            //cout << "\n";
        }
        break;
    default:;
    }
 
    //for (int i = 0; i < row; i++)
    //  delete[]mas[i];
    //delete[]mas;
}
void menu(int **mas, int &row, int &col){
    cout << "\n\n\n\n\n\n\n\t\tРАБОТА С ДВУМЕРНЫМ ДИНАМИЧЕСКИМ МАССИВОМ\n\n\n\n\n\n\n";
    _getch();
    system("cls");
mas = Make(row, col);
    system("cls");
cout << "Как будете вводить числа одномерного массива?\n\n";
Fill_mas(mas, row, col);
for (int i = 0; i < row; i++){
        for (int j = 0; j < col; j++){
            cout << mas[i][j] << " ";
        }
        cout << "\n";
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.04.2016, 21:05
Ответы с готовыми решениями:

Создание двумерного динамического массива в функции
Здравствуйте. Скажите где я допустил ошибку в создании динамического массива? #include&lt;stdio.h&gt; #include&lt;conio.h&gt; ...

Создание функции инициализации двумерного массива строк через указатель
Здравствуйте,имеется двумерный массив: in_data_up=_T(&quot;00&quot;); in_data_up=_T(&quot;01&quot;); ...

Создание двумерного динамического массива
Какой код может быть использован для создания массива из 10 столбцов и n строк? Переменная n определяется в ходе работы программы. ...

2
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
02.04.2016, 21:18 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int** Make(int& row, int& col){
    cout << "Введите размер двумерного динамического массива\n";
    do{
        cout << "Колчество строк: ";
        cin >> row;
        cout << "Количесво столбцов: ";
        cin >> col;
        if (row < 1 || col < 1)
            cout << "\nОшибка!!! размерность массива должна быть больше 0. \n\nВведите другое значение: ";
    } while (row < 1 || col < 1);
    int**mas = new int*[row];
    for (int i = 0; i < row; i++){
        mas[i] = new int[col];
    }
    return mas;
}
1
1 / 1 / 2
Регистрация: 25.02.2016
Сообщений: 141
04.04.2016, 16:01  [ТС] 3
В таком варианте, как вы предложили, программа вообще падает

А еще, если объявление массива запихнуть в конце цикла, то row выделяется, как ошибка "идентификатор row не определен"

Добавлено через 8 минут
Спасибо, все заработала
То я скобку не доставила по невнимательности

Добавлено через 20 часов 4 минуты
Продолжаю работу с данной программой.
Следующим этапом хочу добавить строку или столбец.
Но на этапе вывода массива, программа просто падает.
Может кто найти ошибку?)))
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
void Add(int**mas, int &row, int&col){
    int **temp;
    int var;
    cout << "Что будете добавлять?\n";
    do{
        cout << "1 - строку;\n2 - колонку;\n";
        cin >> var;
        if (var < 1 || var > 2)
            cout << "Введи правильное значение\n";
    } while (var < 1 || var > 2);
 
    int new_row = -1;
    switch (var){
    case 1:
        do{
            cout << "Ваше значение: ";
            cin >> new_row;
            if (new_row < 0 || new_row > row)
                cout << "Вы вышли за пределы размера строки\n  Допустимый размер от '0' до '" << row << "'!\n";
        } while (new_row < 0 || new_row > row);
        temp = new int*[row + 1];
        for (int i = 0; i < row; i++){
            temp[i] = mas[i];
        }
        temp[row] = new int[col];
        for (int i = 0; i < col; i++){
            temp[row][i] = rand() % 90 + 10;
        }
 
        delete mas;
        mas = temp;
        row++;
        break;
    case 2:
        temp = new int*[row];
        for (int i = 0; i < row; i++)
            temp[i] = new int[col + 1];
 
        for (int i = 0; i < row; i++){
            for (int j = 0; j < col; j++){
                temp[i][j] = mas[i][j];
            }
            temp[i][col] = rand() % 90 + 10;
        }
 
        delete mas;
        mas = temp;
        col++;
        break;
    default:;
    }
 
}
     // ---------------------------------------------------------------------------------
// вывод данных в той же функции menu
 
    do{
                cout << "1 - добавление;\n2 - удаление\n";
                cin >> var1;
                if (var1 < 1 || var1 > 2)
                    cout << "Ошибка!!!Данного пункта в меню нет. Повтори попытку.\n\n";
            } while (var1 < 1 || var1 > 2);
        
            switch (var1){
            case 1:
                Add(mas, row, col);
                //system("cls");
                cout << "Полученный массив\n\n";
                for (int i = 0; i < row; i++){
                    cout << "[ ";
                    for (int j = 0; j < col; j++){
                        cout << mas[i][j] << " ";
                    }
                    cout << "]\n";
                }
                break;
            case 2:
                //Delete(mas, size);
                //system("cls");
                cout << "Полученный массив\n\n";
                for (int i = 0; i < row; i++){
                    cout << "[ ";
                    for (int j = 0; j < col; j++){
                        cout << mas[i][j] << " ";
                    }
                    cout << "]\n";
                }
                break;
            default: cout << "Ошибка!!!Данного пункта в меню нет. Повтори попытку.\n\n";
            }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.04.2016, 16:01
Помогаю со студенческими работами здесь

Создание двумерного динамического массива
У Хортона А. - Visual C++ 2005 написано как создавать динамические массивы таким способом: Можно ли создавать таким способом? ...

Создание динамического двумерного массива
void CreateArray(double **DynamicArray, int n){ //??? double **DynamicArray = new double* ; for (int Count = 0; Count &lt; 2*n;...

Массив: создание динамического двумерного массива
Создаю двумерный динамический массив. После ввода m n - конец программы. Помогите, пожалуйста. # include &lt;iostream&gt; using...

Функции двумерного массива. Транспонировать матрицу через ввод вывод функции двумерного массива.
Транспонировать матрицу через ввод вывод функции двумерного массива.Сначала вывести ее,а потом провести транспонирование.

Создание двумерного динамического массива (вылет из программы)
Здравствуйте. Создаю двумерный динамический массив: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Исследование байт-кода Python: подключаем дизассемблер
stackOverflow 19.02.2025
Многие знают, что Python - интерпретируемый язык, но мало кто задумывается о том, что происходит между написанием кода и его выполнением. На самом деле Python использует промежуточное представление. . .
Исследование байт-кода Python: компиляторы против интерпретаторов
stackOverflow 19.02.2025
Понимание байт-кода Python - основополагающий аспект для разработчиков, стремящихся глубже понять внутренние механизмы языка и оптимизировать производительность своих программ. Байт-код представляет. . .
Comprehensions в Python - что это такое?
stackOverflow 19.02.2025
Когда речь заходит о Python, одной из его самых красивых и мощных возможностей являются списковые включения или comprehensions. Это особые синтаксические конструкции, позволяющие создавать новые. . .
Python правда такой медленный? Развенчиваем миф о медлительности
stackOverflow 19.02.2025
Когда речь заходит о выборе языка программирования для нового проекта, вопрос производительности часто становится одним из ключевых факторов. Python, несмотря на свою популярность и простоту. . .
Динамические формы в Flask
stackOverflow 19.02.2025
Работа с веб-формами часто требует гибкости в отношении количества полей, которые пользователь может заполнить. Представьте ситуацию, когда вам нужно создать форму для ввода контактных данных, где у. . .
Обнаружение объектов в реальном времени на Raspberry Pi с OpenCV и Movidius NCS
stackOverflow 19.02.2025
Технология обнаружения объектов в реальном времени становится все более востребованной в различных областях - от систем безопасности до автономных транспортных средств. Особый интерес представляет. . .
где chromium хранит пароли и как их обнулить в пожарном варианте
jigi33 19.02.2025
Where is the chromium browser stores passwords for a sites где chromium-подобный браузер хранит пароли и как их обнулить в пожарном варианте (see screenshot)
howto get access to external internet resources with kinit
jigi33 19.02.2025
Решение проблемы с необходимостью доп. авторизации по Керберос для автоотработки аутентификации на прокси-сервер (see screenshot)
Отслеживание автомобилей и определение скорости с OpenCV и Python на Raspberry Pi
stackOverflow 19.02.2025
В этой статье мы рассмотрим создание системы отслеживания транспортных средств и определения их скорости с использованием компьютерного зрения и библиотеки OpenCV. Наше решение основано на принципе. . .
ENV (environments) valid paths in linux
jigi33 19.02.2025
Environments paths (see screenshot)
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru