Member 14721870 Ответов: 2

Подсчитайте, сколько раз повторяется число и какие числа повторяются в C #


я делаю программу которая говорит мне какие четные а какие нет и какие и сколько чисел повторяются но не дает мне сколько чисел повторяется и я не знаю что я делаю неправильно это мой код

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

int num;
int entrada = Convert.ToInt16(Interaction.InputBox("¿Cuantos numeros vas a ingresar?", "Numeros"));
int[] lista = new int[entrada];
for (int t = 0; t < entrada; t++)
{
   num = Convert.ToInt16(Interaction.InputBox("Ingrese el numero" + (t + 1)));
   listBox1.Items.Add(num);

   if (Convert.ToInt16(num) % 2 == 0)
   {
      listBox2.Items.Add("Los numeros pares son" + num);
   }
   else
   {
      listBox2.Items.Add("Los numeros impares son" + num);
   }
   lista[t] = num;

   for (int i = 0; i < t; i++)
   {
      if (num== lista[i])
      {
         listBox2.Items.Add("Se repite el numero"  + lista[i]+"las veces que se repite son:"+i);
      }
   }
}

}
}

2 Ответов

Рейтинг:
2

Wendelius

Если я правильно интерпретирую код, то внутренний цикл for должен подсчитывать экземпляры определенного числа? Если это верно, то теперь вы просто добавляете в список столько элементов, сколько найдено. Вы, вероятно, хотите сначала подсчитать количество экземпляров, а затем добавить его в список.

Что-то вроде

   ...
   lista[t] = num;

   int numberCount = 0;
   for (int i = 0; i <= t; i++)
   {
      if (num == lista[i])
      {
         numberCount++;
      }
   }
   listBox2.Items.Add($"Se repite el numero {num} las veces que se repite son: {numberCount}");
...


George Swan

Разве так не должно быть i < t+1; ?

Wendelius

Хорошая мысль, спасибо!

Wendelius

Сравнение теперь изменилось

Рейтинг:
0

George Swan

Существует аккуратный метод подсчета экземпляров числа в массиве с помощью Linq. Это может быть не идеально, когда подсчет производится каждый раз, когда производится добавление, но это полезно, когда инвентаризация должна быть проведена после нескольких добавлений.

List<int> list = new List<int> { 1, 2, 3, 2, 3, 3 };
Dictionary<int, int> inventory= list.GroupBy(x => x).ToDictionary(g => g.Key,g => g.Count());
foreach (KeyValuePair<int, int> entry in inventory)
  {
   Console.WriteLine($"Number: {entry.Key} Instances: {entry.Value}");
  }