Проверка цифр числа на геометрическую прогрессию с помощью 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
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

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




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




Урок 6. Исключения и параллельные циклы C#
Урок 29. Управление выполнением программы C#: циклы While
Урок 6. Введение в свойства JavaScript: length