Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помощь с массивами C#

Задача звучит так: Дан массив размера N и целые числа K и L (1 < K ≤ L ≤ N). Найти сумму
всех элементов массива, кроме элементов с номерами от K до L
включительно.

Я создала рандомный массив, и проверку для K и L.

Как извлечь из массива числа от K до L и посчитать сумму без них?
Толька начала осваивать C#

Console.WriteLine("\t Дан массив размера N и целые числа K и L (1 < K <= L <= N). Найти сумму всех элементов массива, кроме элементов с номерами от K до L включительно.");

Console.Write("\t Какое кол-во значений будет в массиве?\t");
int N_ = Convert.ToInt32(Console.ReadLine());
Console.WriteLine($"Массив из {N_} значений: ");

int[] array = new int[N_];
Random rand = new Random();
for (int y = 0; y < N_; y++)
{
array[y] = rand.Next (1, 21);
Console.WriteLine(array[y]);
}

Console.Write("Введите число K: \t");
int K_ = Convert.ToInt32(Console.ReadLine());


Console.Write("Введите число L: \t");
int L_ = Convert.ToInt32(Console.ReadLine());

if (1 < K_ && K_ <= L_)
{
Console.WriteLine($"Вы ввели верное число К (1 < {K_} <= {L_})");

}
else
{
Console.WriteLine($"Число К не входит в данный диапазон (1 < K <= L)");
}

if (K_<= L_ && L_<= N_)
{
Console.WriteLine($"Вы ввели верное число L ({K_} <= {L_} <= {N_})");

}
else
{
Console.WriteLine($"Число L не входит в данный диапазон (K <= L <= N))");
}

Console.WriteLine($"Найдем числа в массиве от {K_} до {L_} ");

По дате
По рейтингу
Аватар пользователя
Новичок

почитай про Span и Range, они как раз для всяких срезов массива. И переходи на NET6.
примерно так можно

123456789101112131415161718192021
 /* 
//как вариант ввода 
int N; 
do 
{ 
    Console.Write("  Введите размер массива (целое число): "); 
} while (int.TryParse(Console.ReadLine(), out N) == false); 
*/ 
 
//  Console.WriteLine(string.Join(", ", array)); //вывести весь массив с каким-нибудь разделителем 
 
int N = 5; 
int[] arr = { 1, 2, 3, 4, 5 }; 
 
int K = 1, L = 2; 
 
int s1 = arr.Sum() - arr[K..(L + 1)].Sum(); //1й способ 
int s2 = arr[0..K].Sum() + arr[(L+1)..N].Sum(); // 2й способ 
 
Console.WriteLine($"s1 = {s1}\ns2 = {s2}");
 
Аватар пользователя
Искусственный Интеллект

Примерно так:

YourSum = a.Take(k).Sum()+a.Skip(l).Sum();

Посмотри, может, где-то надо 1 добавить или отнять. Но принцип именно такой.