Используя функции и массивы выполнить задания - C#
Формулировка задачи:
• сумму элементов массива с нечетными номерами;
• сумму элементов массива, расположенных между первым и последним отрицательными элементами;
• сжать массив, удалив из него все элементы, модуль которых не превышает 1. Что освободились в конце массива элементы заполнить нулями.
Уже есть код, в котором создавался массив, но надо его переделать используя функции:
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());
}
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());
//Вычисляем сумму элементов массива между крайними отрицательными элементами
double SumMejdu = Mass.SkipWhile(r => r >= 0).Skip(1).Reverse().SkipWhile(r => r >= 0).Skip(1).Sum();
Console.WriteLine("\nСумма элементов между отрицательными элементами = {0}\n", SumMejdu.ToString());
//Убираем элементы с модулем менее единицы
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
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
class Program
{
public static void Main()
{
List<int> lst = Enumerable.Repeat(new Random(), 20).Select(r => r.Next(-10, 11)).ToList();
Console.WriteLine(String.Join(", ", lst));
Console.WriteLine(lst.Select((x, i) => i % 2 == 0 ? 0 : x).Sum());
Console.WriteLine(lst.SkipWhile(x => x >= 0).Skip(1).Reverse().SkipWhile(x => x >= 0).Skip(1).Sum());
Console.WriteLine(String.Join(", ", lst.Select(x => Math.Abs(x) > 1 ? x : 0).OrderBy(x => x == 0)));
}
}