#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;
}
C/C++
Код должен находить наименьшее число в массиве, но это всегда почему то 0. Где ошибка?
Вроде ошибки и не было, но немного подправил код:
#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
Владимир Янковский
что за кнопка? объясни пожалуйста
Владимир Янковский
спс
И вообще, у вас там массив выводится, можете посмотреть результат.
Находит минимальный элемент правильно.
Единственное что заполнение уникальными значениями не самое удачное.
Единственное что заполнение уникальными значениями не самое удачное.
У вас там в 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;
Теперь программа должна работать корректно и выводить правильное наименьшее число в массиве.
Чтобы исправить эту проблему, инициализируйте minValue первым значением в массиве arr перед выполнением цикла поиска наименьшего элемента:
int minValue = arr[0];
for (int i = 0; i < SIZE; i++)
{
if (arr[i] < minValue)
{
minValue = arr[i];
}
}
cout << "Наименьшее число в массиве " << minValue << endl;
Теперь программа должна работать корректно и выводить правильное наименьшее число в массиве.
Похожие вопросы
- Как проверить одинаковые числа в массиве без повторений на С++
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Код для "Угадай число"
- Найти наиболее часто встречаемое число в массиве на C++, используя только функции
- Помогите решить задачу,код должен выйти не таким сложным,но что то не выходит
- Почему этот код не работает? Я только начал изучать программирование, не понимаю почему не работает игра в конце
- Почему Visual studio выдаёт ошибку работы с памятью, если она была выделена calloc-ом?
- Ребзи привет, гляньте код там всё норм, только на аутпуте два раза вводит один и тот же массив. Укажите на ошибку.
- Помогите пожалуйста с Массивами .В языке С .Заполнил 2-мерный массив N и M случайными числами дальше не понимаю.
- Задан одномерный массив целых чисел создать код на C++