Использование params - C#
Формулировка задачи:
Добрый день, у меня есть программа, считающая НОК (наименьшее общее кратное) но только для двух переменных, необходимо усовершенствовать её чтобы она считала для неопределённого количества элементов, но проблема в том, что я не понял как его использовать, так как не имел дела с ним ранее.
Вот код имеющейся программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LR8._2
{
class Program
{
public static int NOK(int m, int n)
{
int i;
for (i = 0; i < (n * m + 1); i++)
{
if (i % m == 0 && i % n == 0)
{
int nok = i;
if (i != 0)
{
break;
}
}
}
return i;
}
static void Main(string[] args)
{
Console.WriteLine("Calculate NOK");
Console.Write("- a:");
int m = Convert.ToInt32(Console.ReadLine());
Console.Write("- b:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("--— NOK = {0} —--", NOK(m, n));
Console.ReadKey();
}
}
}
Сверху я написал оригинал задачи, которую нужно изменить, ниже то, что у меня получилось:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LR8._2
{
class Program
{
public static int NOK(params int[] values)
{
int i;
for (i = 0; i < values.Length; i++)
{
Console.WriteLine("Calculate NOK");
if (i % values[i] == 0)
{
Console.Write("- a:");
values[i] = int.Parse(Console.ReadLine());
int nok = i;
if (i != 0)
{
break;
}
}
}
return i;
}
static void Main(string[] args)
{
params int[] values;
Console.Write("- b:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("--— NOK = {0} —--", NOK());
Console.ReadKey();
}
}
}Решение задачи: «Использование params»
textual
Листинг программы
static void Main(string[] args)
{
Console.WriteLine("Введите несколько натуральных чисел (в одну строку)");
var values = Console.ReadLine()
.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToArray();
Console.WriteLine("--— NOK = {0} —--", NOK(values));
Console.ReadKey();
}