Создайте массив 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, и модуль идет до сложения. Вы можете исправить это с помощью скобок

Другие вопросы по тегам