Проверка цифр числа на геометрическую прогрессию с помощью 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты