Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 7
1

Работа с индексами в Трёхмерном массиве

04.12.2019, 20:12. Просмотров 904. Ответов 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
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
#include <iostream>
#include <string>
 
    const int DIM1 = 2; //количество массивов
    const int DIM2 = 5; //количество строк
    const int DIM3 = 3; //количество столбцов
 
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    int*** arr;
    int numR = 1;
 
 
    //создание массива
    arr = new int** [DIM1];
    for (int i = 0; i < DIM1; i++)
    {
        arr[i] = new int* [DIM2];
        for (int j = 0; j < DIM2; j++)
        {
            arr[i][j] = new int[DIM3];
        }
    }
 
 
    //работа с массивом
    for (int i = 0; i < DIM1; i++)
    {
        for (int j = 0; j < DIM2; j++)
        {
            for (int k = 0; k < DIM3; k++)
            {
                arr[i][j][k] = 3;
                std::cout << arr[i][j][k] << " ";
            }
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
 
    //работа с массивом 2.0
 
    for (int i = 0; i < DIM1; i++)
    {
 
        for (int j = 0; j < DIM2; j++)
        {
 
            for (int k = 0; k < DIM3; k++)
            {
                arr[i][j][k] = i;
                std::cout << arr[i][j][k] << " ";
            }
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
 
    //работа с массивом 3.0
 
    for (int i = 0; i < DIM1; i++)
    {
        for (int j = 0; j < DIM2; j++)
        {
            for (int k = 0; k < DIM3; k++)
            {
                arr[i][j][k] = j;
                std::cout << arr[i][j][k] << " ";
            }
            std::cout << std::endl;
        }
        std::cout << std::endl;
    }
 
 
    //поиск суммы элементов массива
 
    float res = 0.0;
 
    for (int i = 0; i < DIM1; i++)
    {
        for (int j = 0; j < DIM2; j++)
        {
            for (int k = 0; k < DIM3; k++)
            {
                res += arr[i][j][k];
            }
        }
    }
 
    std::cout << "Сумма: " << res << std::endl;
 
    //удаление
    for (int i = 0; i < DIM1; i++)
    {
        for (int j = 0; j < DIM2; j++)
        {
            delete[] arr[i][j];
        }
        delete[] arr[i];
    }
    delete[] arr;
 
 
    std::cin.get();
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2019, 20:12
Ответы с готовыми решениями:

В двумерном массиве заменить элементы строк с четными индексами элементами строк с нечетными индексами
Дан массив чисел, А (5, 4). Превратить массив , заменив элементы строк с четными индексами...

В массиве определить произведение элементов с четными индексами и сумму элементов с нечетными индексами
Создание многомодульных программ ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ. -Составить программу,содержащую...

Динамическое программирование в трёхмерном массиве
Здравствуйте Имеется классическая задача дп, только в трёхмерном массиве. В нём нужно найти...

Как записать Z в трёхмерном массиве
ребята, простите за дурной вопрос, но не могу разобраться. есть массив const int Y = 2, X = 2,...

2
1542 / 889 / 414
Регистрация: 01.10.2018
Сообщений: 1,864
Записей в блоге: 2
04.12.2019, 20:34 2
Лучший ответ Сообщение было отмечено 023mch как решение

Решение

Цитата Сообщение от 023mch Посмотреть сообщение
Программа должна принимать из консоли два целочисленных значения
Где?
Цитата Сообщение от 023mch Посмотреть сообщение
Постарайтесь сделать программу устойчивой к возможным ошибкам ввода пользователя и другим способом ее сломать.
Соответственно, нет пользователя - нет ошибок и попыток сломать - защита не нужна. Логично

Добавлено через 13 минут
В общем, вроде всё правильно. Единственная шероховатость, которую заметил, массив у вас int, а сумму почему-то считаете как float. Почему не int?

Но уж как-то совсем скучно. Хоть бы заполнение случайными числами сделали...

К тому же вы, как я понимаю, вы С++ изучаете? Ради фана написали бы в виде шаблона класса (параметризация типа элементов массива), с нефиксированными размерами, всякие конструкторы-деструкторы, методы-операторы бы написали, семантику перемещения реализовали... Не?
0
0 / 0 / 0
Регистрация: 13.06.2019
Сообщений: 7
05.12.2019, 00:19  [ТС] 3
Та ввод из консоли я не делал, потому что меня интересовал именно вопрос связанный с индексами, а конструкторы, декструкторы мы ещё не учили) поэтому и не делал
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2019, 00:19

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Наименьшее значение в трехмерном массиве
Подскажите,пожалуйста, как написать код к заданию:написать программу поиска минимального элемента в...

Найти min в трехмерном массиве
Помогите доработать программу чтобы выводился min в трёхмерном массиве(сейчас ищет максимальное)...

Найти сумму максимального значения элементов с четными индексами и минимального значения элементов с нечетными индексами в одномерном массиве
дан одномерный массив А.найти мах(a2,a4..)+мин(a1,a3) int main() { int y; cin&gt;&gt;N; for(int i=0;...

Нахождение наибольшего числа в трехмерном массиве
Где ошибка?? Код попросту не компилится после вывода массива. Сразу крашится, не понимаю в чем...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.