unholywholewheat Ответов: 2

Как я могу ввести список чисел, но убедиться, что программа не позволяет мне повторять какие-либо числа?


Я сделал программу, которая просила меня ввести 10 различных чисел в диапазоне от 10 до 100, и эти числа не могут повторяться. Я могу сделать так, чтобы программа не допускала числа ниже 10 или больше 100, но я не могу сделать так, чтобы они не повторялись, не делая очень длинный код.

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

Я делаю оператор "for....else", чтобы сохранить числа в диапазоне от 10 до 100. Я использовал его, чтобы убедиться, что цифры тоже не повторяются. Он становится очень длинным, чем ближе я подхожу к вводу десятого числа. Программа работает, но это слишком много, чтобы ввести.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp9
{
    class Program
    {
        static void Main(string[] args)
        {
            string userNumber;
            string previousNumber = ("");
            int numberint;

            Console.WriteLine("I need you to enter 10 different numbers ranging from 10 to 100");

            for (int number = 0; number < 10; number++)
                
            {
                Console.Write("Please enter your number: ");
                userNumber = Console.ReadLine();
                numberint = int.Parse(userNumber);
                if (numberint > 100 || numberint < 10 || userNumber == previousNumber) 
                {
                    Console.WriteLine("Invalid number. Please enter a number ranging from 10 to 100");
                    number--;
                }
                else
                    Console.WriteLine("Thank you for entering " + userNumber);
            }

Patrice T

И вы планируете показать свой код?

Richard MacCutchan

Похоже, ты делаешь это неправильно. Но поскольку мы не можем видеть ваш код, мы понятия не имеем, что именно вы делаете.

2 Ответов

Рейтинг:
2

Peter Leow

Это всего лишь пример алгоритма в псевдокоде для решения вашей проблемы:

0. Initialize an array container
1. Get a user input 
2. Converted that input to a number
3. IF (that number is between 10 and 100 AND is not already in the array container) THEN
   3.1  Add it to that array container
4. Go to 1 if that array container contains less than 10 elements.
Для реализации этого алгоритма можно использовать любой язык программирования. Для конкретного языка синтаксис и особенности, спросите у Гугла.


Рейтинг:
14

CPallini

Вы могли бы использовать HashSet[^] для этой цели, например

HashSet<int> number = new HashSet<int>();
while (number.Count < 10)
{
  int candidate;
  Console.WriteLine("Please, enter a number between 10 and 100");
  if (int.TryParse(Console.ReadLine(), out candidate))
  {
    if (candidate >= 10 && candidate <= 100)
      number.Add(candidate); // adding a duplicate to the HashSet has no effect
  }
}
// 'number' contains 10 different integers in the 10..100 range. Showing them:
foreach (int n in number)
  Console.WriteLine(n);