Программа не считает номер второго отрицательного элемента, и сумму элементов - C#
Формулировка задачи:
Помогите пожалуйста, код вроде правильный, но программа не считает номер второго отрицательного элемента, и сумму элементов.
Вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mass
{
class Program
{
// private static double count;
static void Main(string[] args)
{
// Random rnd = new Random();
Console.Write("Введите размер массива ");
int N = int.Parse(Console.ReadLine());
double[] Mass = new double[N];
//Заполняем массив
// Console.WriteLine("Выберите ручной или автоматический вариант заполнения массива");
// Console.WriteLine(" 1 - Ручной ввод\n 2 - Автоматический ввод");
// swVVOD:
// int vvod = int.Parse(Console.ReadLine());
// switch (vvod)
// {
// case 1:
// {
// Console.Write("Введите элементы массива\n\n");
// for (int i = 0; i < N; i++)
//{
// Mass[i] = double.Parse(Console.ReadLine());
Console.WriteLine("Введіть значення елементів масиву");
for (int i = 0; i < Mass.Length; i++)
{
Console.Write("Mass[{0}] = ", i);
Mass[i] = Convert.ToDouble(Console.ReadLine());
}
// Контрольне виведення масиву
Console.WriteLine("Вихідний масив:");
for (int i = 0; i < Mass.Length; i++)
{
Console.Write("{0} ", Mass[i]);
}
Console.WriteLine(); // переведення рядка
// break;
// }
/* case 2:
{
Console.Write("\nИсходный массив\n\n");
for (int i = 0; i < N; i++)
{
Mass[i] = (double)(rnd.NextDouble() * rnd.Next(-10, 5));
Console.Write("{0} ", Mass[i]);
}
break;
}
}
//Console.Write("\nИсходный массив\n\n");
//Вычисляем сумму элементов массива с нечетными номерами
double nechetSum = 0;
for (int i = 1; i < Mass.Length; i++)
{
if (Mass[i] % 2 != 0)
nechetSum += Mass[i];
}
Console.WriteLine("\n\nСумма нечетных элементов = {0}", nechetSum.ToString());
*/
//Вычисляем сумму элементов массива между крайними отрицательными элементами
int K = 0;
for (int i = 0; i < Mass.Length; i++)
{
if (Mass[i] < 0)
K = i;
// break;
}
Console.WriteLine("номер первого отрицательного={0}", K);
int K1 = 0;
for (int i = K; i > Mass.Length; i--)
{
if (Mass[i] < 0)
K1 = i;
// break;
}
Console.WriteLine("номер второго отрицательного={0}", K1);
double sum = 0.0;
for (int i = K + 1; i < K1; i++)
{
sum += Mass[i];
}
Console.WriteLine("Сумма элементов = {0}", sum);
//Убираем элементы с модулем менее единицы
/* for (int i = 0; i < N; i++)
{
if (Math.Abs(Mass[i]) < 1) Mass[i] = 0;
}
//Сжимаем массив и заполняем освобожденные элементы нулями
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if (Mass[i] == 0)
{
Mass[i] = Mass[j];
Mass[j] = 0;
}
else break;
}
}
Console.WriteLine("Измененный массив\n");
foreach (double i in Mass) Console.Write("{0} ", i);
Console.WriteLine();*/
Console.ReadKey();
}
}
}Решение задачи: «Программа не считает номер второго отрицательного элемента, и сумму элементов»
textual
Листинг программы
private static void Main()
{
Console.Write("Введите размер массива ");
int n = int.Parse(Console.ReadLine());
double[] mass = new double[n];
//Заполняем массив
Console.WriteLine("Введіть значення елементів масиву");
for (int i = 0; i < mass.Length; i++)
{
Console.Write("Mass[{0}] = ", i);
mass[i] = double.Parse(Console.ReadLine());
}
// Контрольне виведення масиву
Console.WriteLine("Вихідний масив:");
Console.WriteLine(string.Join(" ", mass));
//Вычисляем сумму элементов массива между крайними отрицательными элементами
int k1 = 0;
for (int i = 0; i < mass.Length; i++)
{
if (mass[i] < 0)
{
k1 = i;
break;
}
}
Console.WriteLine("номер первого отрицательного={0}", k1);
int k2 = 0;
for (int i = mass.Length - 1; i > k1; i--)
{
if (mass[i] < 0)
{
k2 = i;
break;
}
}
Console.WriteLine("номер второго отрицательного={0}", k2);
double sum = 0.0;
for (int i = k1 + 1; i < k2; i++)
{
sum += mass[i];
}
Console.WriteLine("Сумма элементов = {0}", sum);
Console.ReadKey();
}