Создайте массив int + для цикла, запрашивая у пользователя 5 почтовых индексов - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть домашнее задание, и я не очень хорошо его понимаю. Вы можете решить это для меня? Это назначение:

  • Создать массив int + для цикла, запрашивая у пользователя ввод 5-ти почтовых индексов.
  • Используя метод Array.Sort ,Сортировка массива.
  • Запишите 5 почтовых индексов, используя цикл for.
  • Теперь создайте цикл do while. В нем попросите пользователя ввести почтовый индекс и скажите ему, является ли это одним из 5 почтовых индексов, которые вы предоставляете. Сообщите пользователю, является ли это поддерживаемой областью почтового индекса. Для этой части вы должны использовать метод BinarySearch , включая тестирование на «не найден».

(Примечание редактора: ZIP-коды обычно состоят из 5 цифр и не запускаютсяс нулем.)

Дополнительные примечания:

  • Если пользователь вводит 0, выйдите из цикла и программы.
  • Используйте правильный цикл do while. Попросите пользователя указать почтовый индекс, который он хочет найти, в качестве первого шага в цикле do while.
  • В коде, сообщающем пользователю, что почтовый индекс не является поддерживаемым вами, вам потребуется блок if для проверки, введен ли пользователем ноль.
  • Если пользователь вводит ноль, вы не выводите сообщение, что это не поддерживаемый почтовый индекс.
  • Не используйте строку кода, в которой используется слово, зарезервированное для разрыва.

Пока мой код:

using System;

namespace HW_8
{
  class Program
  {
    public static object f;

    public static void Main(string[] args)
    {
      int[] zipCode = 
      { 
        28301, 21302, 91033, 65323, 90113,
        65343, 84263, 03989, 43735, 83643 
      };
      string inputString;
      int validZipCode;
      Console.WriteLine("Please enter zipcode");
      inputString = Console.ReadLine();
      validZipCode = Convert.ToInt32(inputString);

      for ( int i = 0; i < zipCode.Length; i = i + 1 )
      {
        Console.Write("Please enter zipcode {0}: ", i);
        zipCode[i] = Convert.ToInt32(Console.ReadLine());
      }
      Array.Sort(zipCode);
      for ( int i = 0; i < zipCode.Length; i = i + 1 )
      {
        Console.WriteLine("Zip code {0}: {1}", i, zipCode[i]);
      }
    }
  }
}

1 Ответ

0 голосов
/ 11 ноября 2019

Ура! Давайте делать домашнее задание! : -)

using System;
using System.Linq;

namespace HomeWork
{
    class Program
    {
        public static int ReadInt()
        {
            int result;
            string zc;
            while (!int.TryParse(zc = Console.ReadLine(), out result))
            {
                Console.Write($"The value {zc} is invalid. Try again! ");
            }
            return result;
        }

        public static int[] AskFiveZipCodes()
        {
            var result = new int[5];
            for (var i = 0; i < 5; i++)
            {
                bool isNotValid;
                do
                {
                    Console.Write($"Please enter ZIP code {i + 1}: ");
                    result[i] = ReadInt();
                    isNotValid = result[i].ToString().Length != 5;
                    if (isNotValid) { Console.WriteLine($"A ZIP code needs to be 5 digits! You entered {result[i]}."); }
                }
                while (isNotValid);
            }
            return result;
        }

        static void Main(string[] args)
        {
            var fiveZipCodes = AskFiveZipCodes();
            Array.Sort(fiveZipCodes);
            Console.WriteLine("All ZIP codes: " + string.Join(", ", fiveZipCodes.Select(z => z.ToString())));
            int zipCode;
            do
            {
                Console.Write($"Please enter ZIP code to check: ");
                if ((zipCode = ReadInt()) == 0) { continue; }
                int index;
                Console.Write($"The value {zipCode} is ");
                Console.WriteLine((index = Array.BinarySearch(fiveZipCodes, zipCode)) < 0 ? "not found." : $"at index {index}. ");
            }
            while (zipCode != 0);
            Console.Write($"Game over!");
        }
    }
}

Я должен предупредить вас. Если вы принесете этот код своему учителю, вас попросят объяснить, как он работает. И я видел код, который вы вставили. Вы не сможете объяснить, почему это работает, но все же работает!

Итак, у вас есть два варианта. Либо сделайте свою домашнюю работу самостоятельно, либо попытайтесь выяснить, что делает мой код и почему он работает. (И я мог бы сделать это немного более продвинутым, но позволил себе написать всего 10 минут.)

Для меня эти домашние вопросы - это весело, и есть хороший шанс, что даже ваш учитель будет немного смущенэтот кодНо, используя Visual Studio с .NET Core 3.1, он должен хорошо компилироваться.

Код на самом деле не такой сложный, но я должен был следовать ограничениям этого упражнения. В нем есть несколько хитростей, которые определенно запутают людей. Как часть if ((zipCode = ReadInt()) == 0) { continue; }.

Итак, я сделал твою домашнюю работу. Жаль, что твой учитель никогда не поверит, что ты это написал. Но для вас и для них это определенно интересно исследовать. Покажите им это, сказав, что кто-то написал это для вас. (Они не будут возражать против этого!)

...