Member 10585568 Ответов: 2

Как я могу перебирать аргументы функций в C#? Как я могу проверить все числа, переданные через аргумент функции, являются ли они собольими или нет?


Предположим, у нас есть 5 номеров 2277,4004,11,23,583835,1010, и нам нужно создать пароль из них.
Условия таковы:

password = Sum of all stable numbers - сумма всех нестабильных чисел

где стабильные числа - это числа тех, кто имеет одинаковую частоту/встречаемость каждой цифры в числе.
А нестабильные числа-это те, которые имеют разную частоту/встречаемость цифр в числе.

метод должен выглядеть следующим образом

общественная int findpassword(инт вход 1,вход 2 инт,инт input3 не,input4 инт,инт input5)
{
}

Что я уже пробовал:

Я могу проверить для одного числа, является ли оно стабильным или нет, но как я могу проверить для всех чисел, переданных через аргумент функции, являются ли они собольими или нет?

2 Ответов

Рейтинг:
6

OriginalGriff

Цитата:
Я должен заниматься этой функцией только там, где главная проблема.

Это то же самое, только с парами вам не нужно называть каждый аргумент индивидуально, и вы можете передать столько или столько аргументов, сколько вам нужно.

Но... если ваша домашняя работа требует, чтобы вы использовали именно эту сигнатуру метода, то начните с написания метода, который принимает целое число и возвращает bool:
private static bool IsStable(int value)
   {
   ...
   }
Затем назовите это пять раз в своем коде:
int stableCnt = 0;
int unstableCnt = 0;
if (IsStable(input1)) stableCnt++;
else unstableCnt++;
if (IsStable(input2)) stableCnt++;
else unstableCnt++;
...


Member 10585568

Спасибо вам, сэр, за решение, успешно завершив всю работу.Большое спасибо, сэр.

OriginalGriff

Пожалуйста

Рейтинг:
2

Alex Schunk

Измените метод на

public int findpassword(params int[] input)
{
   if(input == null)
       throw new ArgumentNullException(nameof(input));

   for(int i=0; i < input.Length; i++)
   {
   }
}

может быть?


Member 10585568

Я должен заниматься этой функцией только там, где главная проблема.

Alex Schunk

public int findpassword(int input1,int input2,int input3,int input4,int input5)
{
   int findpassword(params int[] input)
   {
      if(input == null)
          throw new ArgumentNullException(nameof(input));

      for(int i=0; i < input.Length; i++)
      {
         // Do Stuff
      }
   }

   var result = findpassword(new int[] { input1, input2, input3, input4, input5 });
}

Member 10585568

Спасибо Вам за помощь.Я работаю с C# 5.0, где вложенные функции не разрешены, как я видел в некоторых статьях.В любом случае спасибо, сэр.

Alex Schunk

Вложенные функции-это всего лишь уловка компилятора... Компилятор создаст второй частный метод из вложенного... То, что Вы тоже можете сделать.