C/C++

Код должен находить наименьшее число в массиве, но это всегда почему то 0. Где ошибка?

#include <iostream>
#include <ctime>
using namespace std;
void main() {
setlocale(LC_ALL, "ru");
srand(time(NULL));
const int SIZE = 10;
int arr[SIZE];
bool allreadyThere;
for (int i = 0; i < SIZE;)
{
allreadyThere = false;
int newRandomValue = rand() % 30;
for (int j = 0; j < i; j++)
{
if (arr[j]==newRandomValue)
{
allreadyThere = true;
break;
}

}
if (!allreadyThere) {
arr[i] = newRandomValue;
i++;

}
}
for (int i = 0; i < SIZE; i++)
{
cout << arr[i] << endl;
}

int minValue = arr[0];
for (int i = 0; i < SIZE; i++)
{
if (arr[i] < minValue)
{
minValue = arr[i];
}
}
cout << "Наименьшее число в массиве " << minValue << endl;


}
Вроде ошибки и не было, но немного подправил код:
 #include  
#include
using namespace std;
int main() {
setlocale(LC_ALL, "ru");
srand(time(NULL));
const int SIZE = 10;
int arr[SIZE];
for (int i = 0; i < SIZE;) {
bool allreadyThere = false;
int newRandomValue = rand() % 30;
for (int j = 0; j < i; j++)
if (arr[j] == newRandomValue) {
allreadyThere = true;
break;
}
if (!allreadyThere) {
arr[i] = newRandomValue;
i++;
}
}
for (int i = 0; i < SIZE; cout
Григорий Лаптев
Григорий Лаптев
74 595
Лучший ответ
Владимир Янковский что за кнопка? объясни пожалуйста
И вообще, у вас там массив выводится, можете посмотреть результат.
Bolat Hussein-Off
Bolat Hussein-Off
90 454
Находит минимальный элемент правильно.
Единственное что заполнение уникальными значениями не самое удачное.
RS
Rauan Sliamkulov
51 416
У вас там в newRandomValue записывается остаток от деления на 30. Неудивительно, что генерируется хотя бы одно число, которое делится на 30 без остатка. Поэтому в массив попадает 0, а потом вы его находите правильно.
Проблема в том, что массив arr заполняется случайными значениями, но вы не инициализируете его перед началом заполнения. Изначально элементы массива могут содержать любое значение, в том числе и отрицательное, поэтому minValue = arr[0] устанавливает начальное значение минимального элемента равным 0, что может быть меньше всех остальных элементов в массиве, и потому программа выводит неверный результат.

Чтобы исправить эту проблему, инициализируйте minValue первым значением в массиве arr перед выполнением цикла поиска наименьшего элемента:
int minValue = arr[0];
for (int i = 0; i < SIZE; i++)
{
if (arr[i] < minValue)
{
minValue = arr[i];
}
}
cout << "Наименьшее число в массиве " << minValue << endl;

Теперь программа должна работать корректно и выводить правильное наименьшее число в массиве.
SS
Sevak Safaryan
6 059