Loading...
Обучение/Помощь новичкам | c++ помощь с кодом
Есть код который выводит сумму 3 найменьших положительных чисел массива, проблема в том если в массив вписать отрицательные числа то программа не будет работать... Как это исправить???
вот код


#include<iostream>
using namespace std;

int main( void )
{
int i,x[10];
int min = 10, min2 = 10, min3 = 10;
cout<<"Введите массив: ";
for(i=0;i<10;i++)
cin>>x[i];

// найдём наименьшее значение
min = 10;
for( i = 0; i < 10; ++i )
if ( x[i] < x[min])
min = i;
// найдём следующее наименьшее
min2 = 10;
for( i = 0; i < 10; ++i )
if ( x[i] < x[min2] && i != min )
min2 = i;

// найдём следующее наименьшее
min3 = 10;
for( i = 0; i < 10; ++i )
if ( x[i] < x[min3] && i != min && i != min2)
min3 = i;

// выведем результат
if( x[min] > 0 && x[min2] > 0){
if(x[min3] > 0){
cout << "Сумма найменьших положительных"
<< " = " << x[min] + x[min2] + x[min3]<< endl;
}
}
return 0;
}
https://cpp.mazurok.com/tag/%D0%BE%D1%82%D1%80%D0%B8%D1%86%D...D0%BB%D0%B0/
482542053 , я бы вот так делал, через пузырьковую сортировку

#include <iostream>

using namespace std;

int main()
{
const int arraySize = 10;
int array[arraySize];
cout << "Введите массив" << endl;
for (int i = 0; i < arraySize; i++)
cin >> array[i];

// сортируем массив по возрастанию
for (int j = 1; j < arraySize; j++)
{
bool found = false;
for (int i = 0; i < arraySize - j; i++)
{
if (array[i] > array[i + 1])
{
int arrI = array[i + 1];
array[i + 1] = array[i];
array[i] = arrI;
found = true;
}
}
if (!found)
break;
}

int positiveSum = 0;
int fcnt = 0;

for (int i = 0; i < arraySize; i++)
{
if (array[i] > 0)
{
positiveSum += array[i];
fcnt++;
if (fcnt == 3)
break;
}
}
if (fcnt == 3)
cout << "Сумма наименьших положительных: " << positiveSum << endl;
else
cout << "В массиве нет трех положительных чисел" << endl;

return 0;
}

________
посл. ред. 04.12.2020 в 22:52; всего 1 раз(а); by steel97
Онлайн: 3
Время:
Gen. 0.0873
(c) Bym.Guru 2010-2026