На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Проверка цифр числа на геометрическую прогрессию с помощью C#


Задача

Требуется программа на языке C#, которая будет выводить на консоль true, если нижеследующее высказывание истинно или false - если, соответственно, оно ложно. Высказывание: есть трехзначное число, его цифры - члены геометрической прогрессии.
Текст программы ниже со всеми необходимыми комментариями. Предварительно можно добавить только что программа состоит из трех частей: два метода (раскладывающий число на цифры) и возвращающий true или false, а также основного метода - которые получает исходное число и выводит результат на консоль.

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

namespace GeometricProgression
{
    class Program
    {
        //метод преобразования числа в массив цифр
        static byte[] GetFigures(int val)
        {
            List<byte> res = new List<byte>();
            while (val != 0)
            {
                res.Add((byte)(val % 10));
                val /= 10;
            }
            res.Reverse();
            return res.ToArray();
        }

        //метод определения наличия прогрессии
        static Boolean isProg(byte[] figures)
        {
            //расставляем элементы массива (цифры в числе) по возрастанию, так как не указано,
            //что они идут по возрастающей (хотя интутивно кажется так). Например, может быть и 248 и 482. 
            //Для этого делаем элементы с большей цифрой ближе к концу. И так два раза - по размеру массива.
           byte per = 0;
           for (int j = 0; j < 2; j++)
           {
               for (int i = 0; i < 2; i++)
               {
                   if (figures[i] > figures[i + 1])
                   {
                       per = figures[i + 1];
                       figures[i + 1] = figures[i];
                       figures[i] = per;
                   }
               }
           }
           //делим друг на друга
           double x = figures[1] / figures[0];
           double y = figures[2] / figures[1];
           //вычисляем остаток
           double x1 = figures[1] % figures[0];
           double y1 = figures[2] % figures[1];
           //сравниваем результаты деления и остатки должны быть равны нулю
           if ((x==y)&&(x1==0)&&(y1==0)) return true;
           else return false;
        }

        static void Main(string[] args)
        {
            //исходное трехзначное число
            int isCh =  842;
            //методы обрабатывают его
            byte[] figures = GetFigures(isCh);
            Boolean rez = isProg(figures);
            //выводим результат на консоль и ждем завершения
            Console.WriteLine(rez);
            Console.ReadKey();
        }
    }
}
Решение задач на C# - up777up@yandex.ru - быстро и недорого. Скайп up777up2




тегизаметки, задачи, си шарп, математика





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Есть ли флеш в браузере?
Рецензия на книгу Кристофер Мур Грязная работа


© upread.ru 2013-2019
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.