Ошибка в вашем коде возникает из-за выхода за пределы массива. В объявлении int arr[2][4]; указано, что массив содержит 2 строки и 4 столбца, но в циклах вы используете индексы до 3 и 5 соответственно:
for (int i = 0; i < 3; i++) { // Здесь должно быть i < 2
for (int j = 0; j < 5; j++) { // И здесь должно быть j < 4
// ...
Кроме того, выдача чисел больше 100 происходит из-за ошибки в расчете случайного числа. Выражение 10 + rand() % 100 может выдать число до 109, потому что % 100 дает числа от 0 до 99, а затем вы прибавляете 10. Для генерации чисел от 10 до 100 вам нужно использовать rand() % 91 + 10, чтобы получить числа от 0 до 90 и после прибавления 10 получить диапазон от 10 до 100.
Исправленный вариант кода:
#include
#include
using namespace std;
int main() {
setlocale(LC_ALL, "RU");
srand(time(nullptr));
int arr[2][4];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
arr[i][j] = rand() % 91 + 10; // Исправлено здесь
}
}
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
cout << arr[i][j] << endl;
}
}
return 0;
}
После этих исправлений программа должна работать корректно, не выходить за пределы массива и генерировать числа в заданном диапазоне от 10 до 100.
#include <iostream>
#include <ctime>
using namespace std;
int main() {
setlocale(LC_ALL, "RU");
srand(time(nullptr));
int arr[2][4];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
arr[i][j] = 10 + rand() % 100;
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 5; j++) {
cout << arr[i][j] << endl;
}
}
return 0;
}