@LP-DIMAN

Как исправить ошибку в коде на C++?

#include
#include
#include

using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
const int n = 5;
int a[n];
cout << " Введите " << n << " целых чисел: " << endl;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n; i++) cout << a[i] << " ";
int imin = 0;
for (int i = imin = 0; i < n; i++) {
if (a[i] < a[imin]) imin = i;

}
cout << "\n\ Минимальный элемент массива = " << a[imin];
cout << endl;

double C[n], p = 1.0;
int i, k = 0;

srand(time(0));
for (i = 0; i < n; i++)
{
C[i] = (double)(rand() % 50) / 10;
if (C[i] >0)
{
p *= C[i];
++k;
}
}

cout << "Среднее геометрическое положительных элементов массива: ";
if (k > 0){
cout << pow(p, 1.0 / k);
cout << endl;
}
else{
cout << k;
cout << endl;
return 0;
}
cout << endl << "Обратный порядок: " << endl;;
for (int i = n - 1; i >= 0; i--)
{

cout << a[i] << endl;

}
}
Неправильно считает среднее геометрическое положительных чисел, точнее выводит рандомно. Если убираю строку, то пишет ноль . Как вывести точное значение?
  • Вопрос задан
  • 243 просмотра
Пригласить эксперта
Ответы на вопрос 2
maaGames
@maaGames
Погроммирую программы
Я правильно понимаю, что ты сперва заполняешь массив С рандомными числами, а потом удивляешься, что у тебя рандомный результат?

И проверка на положительность не нужна, rand возвращает числа в диапазоне [0:6535]
Ответ написан
@Alexander1705
Эмм... Что это?
srand(time(0));
for (i = 0; i < n; i++)
{
C[i] = (double)(rand() % 50) / 10;
if (C[i] >0)
{
p *= C[i];
++k;
}
}


P.S. Используйте тэг <code lang="cpp"></code>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы