Top.Mail.Ru
Ответы

Программирование на C#

Помогите с кодом (он работает не совсем корректно)!
Я не могу разобраться с проверкой условия (о том есть ли два отрицательных элемента)
Код:
using System;

class HelloWorld {
static void Main(string[] args) {

int n = 0;

do //Проверка на корректность n
{
Console.WriteLine ("Введите количество элементов массива");
n = Convert.ToInt32(Console.ReadLine());
}
while(n > 20 && n < 1);

Console.WriteLine ("Массив");
int[] a = new int[n]; //Создаём массив

Random rand = new Random();

for(int i = 0; i < n; i++) {
a[i] = rand.Next (-100,100); //Заполняем случайными числами диапозоном от -100 до 100
Console.Write (a[i] + " ");
}

Console.WriteLine ();
Array.Sort(a);

for(int i = 0; i < n; i++) {
Console.Write (a[i] + " "); //выводим массив
}
Console.WriteLine ();

bool inserted = true;

int m1 = int.MinValue;
int m2 = int.MinValue; //объявляем переменные для нахождения наибольших отрицательных чисел
int Sum = 0;

for (int i = 0; i < n; i++) {
if (a[i] < 0 && a[i] > m1) { //поиск первого наибольшего отрицательного числа
m2 = m1; //присваиваем m2 значение m1, т.к. оно было наибольшим до этого
m1 = a[i];
} else if (a[i] < 0 && a[i] > m2) { //поиск второго наибольшего отрицательного числа
m2 = a[i];
inserted = false;
}
}
if (inserted == false) {
Sum = m1 + m2; //сумма наибольших отрицательх чисел
Console.WriteLine ($"Сумма {Sum}");
}

else {
Console.WriteLine ("Нету "); //вывод сообщения о том, что нет двух отрицательных элементов
}
}
}

По дате
По рейтингу
Аватар пользователя
Мыслитель

Условие while (n > 20 && n < 1) никогда не будет выполняться.
Проверка if (inserted == false) - плохой пример кода. Замени на if (!inserted).
Для поиска ошибок используй дебаггинг.