Создайте массив 3x3x3. Заполните его случайными значениями от 0 до 9. Выведите массив. Найти выход 3 самых маленьких и 3 самых больших значения
Создайте массив 3x3x3. Заполните его случайными значениями от 0 до 9. Выведите массив. Найдите выходные данные 3 самых маленьких и 3 самых больших значения. Я продолжаю получать ошибки от компилятора вместе с ним, заявляя о проблемах с моей инициализацией. Я не знаю почему.
`#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void initialize(int x[3][3][3]) int column; int row; int layer; int large1;
void find(int x[3][3][3]); //to find number to fill
int main(){
srand(time(NULL));
int x[3][3][3];
int large1, large2, large3, small1, small2, small3, row, column, layer;
initialize(x[3][3][3]);
int x = RAND() % 0 + 10;
}
void initialize(int x[3][3][3]){
int large1, large2, large3, small1, small2, small3;
large1 = large2 = large3 = INT_LARGE;
for (int r = 0; r < 3; r++){
for (int c = 0; c < 3; c++){
for (int l = 0; l < 3; l++){
if (x[r][c][l]>large1){
large3 = large2;
large2 = large1;
large1 = x[r][c][l];
}
}
}
}
cout << large1 << large2 << large3 << endl;
system("pause");
}
`
3 ответа
- удалить мусор `в начале и конце кода
- добавить точку с запятой между
void initialize(int x[3][3][3])
а такжеint column; int row; int layer; int large1;
initialize(x[3][3][3]);
это плохо, потому что доступ за пределы диапазона. использованиеinitialize(x);
- в
int x = RAND() % 0 + 10;
Есть три ошибки:x
конфликтует сint x[3][3][3];
Пожалуйста, измените его имя.RAND()
не в стандарте. Ты имел ввидуrand()
?- Не делите целое число на 0.
INT_LARGE
не определено. Пожалуйста, определите это где-нибудь перед использованием.
Первая проблема заключается в том, что ваша декларация initialize
не заканчивается точкой с запятой, но сопровождается ... ]) int column; int row; int layer; int large1;
, Это не разбирает.
Вторая проблема заключается в том, что int x = RAND
Линия совершенно бессмысленна. Это переопределяет x
и произойдет после initialize
, Это плохое имя, потому что оно ничего не инициализирует, а сортирует элементы.
На этом этапе вы действительно должны вернуться к своим книгам, а затем вернуться к задаче высокого уровня. Удостоверься что initialize
на самом деле инициализирует x
, а затем положить фактическую логику сортировки в find
, Похоже, вас попросили завершить программу, и вы совсем забыли о find
,
Без сообщения об ошибке трудно угадать, что происходит не так.
Это сказало, int x = RAND() % 0 + 10;
выделялся как маяк, так что, думаю, это твоя проблема. Вы не можете использовать модуль (или делить) с 0, и модуль идет до сложения. Вы можете исправить это с помощью скобок