Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Text;
- namespace ConsoleApplication1 {
- static class Program {
- static void Main() {
- var a = ReadValue("первое");
- var b = ReadValue("второе");
- var matches = Match((int)a, (int)b);
- Console.WriteLine(matches);
- Pause();
- }
- static decimal ReadValue(string id) {
- var provider = NumberFormatInfo.InvariantInfo;
- while (true) {
- const decimal min = 100;
- const decimal max = 900;
- Console.WriteLine("Введите {0} число (между {1} и {2})", id, min, max);
- var line = Console.ReadLine();
- decimal result;
- if (decimal.TryParse(line, NumberStyles.Float, provider, out result)) {
- if (result >= min && result <= max) {
- return result;
- }
- }
- }
- }
- static Matches Match(int a, int b) {
- var result = new Matches();
- const int @base = 10;
- for (var i = 0; a > 0 && b > 0; i++) {
- var digit = a % @base;
- if (b % @base == digit) {
- result.Add(i);
- }
- a /= @base;
- b /= @base;
- }
- return result;
- }
- static void Pause() {
- Console.WriteLine("Нажмите любую клавишу для продолжения рода . . .");
- Console.ReadKey();
- }
- class Matches {
- readonly Stack<string> _items = new Stack<string>();
- static readonly string[] _names = { "единицах", "десятках", "сотнях", "тысячах" };
- public void Add(int index) {
- if (index < 0 || index >= _names.Length) {
- throw new ArgumentException();
- }
- _items.Push(_names[index]);
- }
- public override string ToString() {
- switch (_items.Count) {
- case 0:
- return "Совпадений нет";
- case 1:
- return "Совпадение в " + _items.Pop();
- default:
- var builder = new StringBuilder("Совпадения в ");
- var first = true;
- while (_items.Count > 1) {
- if (first) {
- first = false;
- }
- else {
- builder.Append(", ");
- }
- builder.Append(_items.Pop());
- }
- builder.Append(" и ").Append(_items.Pop());
- return builder.ToString();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement