C++:
const int rows = 5; // Количество строк
const int cols = 5; // Количество столбцов
const int totalElements = 25; // Общее количество элементов
int randomNumbers[rows][cols]; // Двумерный массив
bool usedNumbers[101] = { false }; // Маска для отслеживания использованных чисел
void setup() {
Serial.begin(9600); // Инициализация последовательного порта со скоростью 9600 бод
}
void loop() {
randomSeed(analogRead(0)); // Инициализация генератора случайных чисел
// Заполнение двумерного массива случайными уникальными числами от 100 до 200
int count = 0;
while (count < totalElements) {
int num = random(100, 201); // Генерация случайного числа в диапазоне от 100 до 200
if (!usedNumbers[num - 100]) { // Проверка, использовалось ли число
usedNumbers[num - 100] = true; // Отметить число как используемое
randomNumbers[count / cols][count % cols] = num; // Заполнение двумерного массива
count++; // Увеличиваем счетчик добавленных чисел
}
}
// Вывод двумерного массива в последовательный порт
Serial.println("Случайные уникальные числа в двумерном массиве:");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
Serial.print(randomNumbers[i][j]); // Печать каждого числа массива
Serial.print(" "); // Разделитель между элементами
}
Serial.println(); // Переход на новую строку после завершения вывода строки массива
}
delay (3000);
}
Столкнулся с проблемой. Код выполняется несколько раз и в СериалПорт перестают отправляться данные.
Опытным путём установил, что всё зависит от размера массива. Использую Леонардо. Думаю, что это переполняется память энергозависимая.
Подскажите, эта проблема решается?