29 мая 2013

Китайский календарь

Ещё одно интересное задание:
В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов,
 обозначаемых названиями цвета: зеленый, красный, желтый, белый и голубой. При
    этом каждый цвет следует по два года подряд. В каждом подцикле годы носят названия животных:
    крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи.
    По номеру года определить его название, если 4 год нашей эры — начало цикла: «год зеленой крысы».

using System;
using System.Text;

namespace China
{


    class Program
    {
        static void Main(string[] args)
        {
            Compute();
        }

        static void Compute()
        {

            string[] MyAnimal = new string[12] { "Rat", "Cow", "Tiger", "Hare", "Dragon", "Snake", "Horse", "Sheep", "Monkey", "Cock", "Dog", "Pig" };
            string[] MyColor = new string[5] { "Green", "Red", "Yellow", "White", "Blue"};

            int counterA= 0;
            int counterC = 0;
            int counterCC = 0;
            for (int i = 4; i <= 70;i++)
            {
               
                if (i>4 && (i-4)%12==0)
                {                  
                    counterA++;
                }
                if (i>4 && i % 2 != 0)
                {
                    counterC++;
                }
                if (i > 4 && (i - 4) % 10 == 0)
                {
                    counterCC+=10;
                    counterC = 0;
                }

                StringBuilder t;
                t = new StringBuilder("Year: " + i + " "+MyColor[i - 4 - (counterC+counterCC)] + " " + MyAnimal[(i - 4 - 12 * counterA)]);

                Console.WriteLine(t);
            }

            Console.ReadKey();
        }
    }
}

Машины, грузовики.

Ещё одно небольшое задание на c#. Про наследование. Задание таково:

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка),
числом цилиндров, мощностью. Определить методы переназначения и изменения мощности.
Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова.
Определить функции переназначения марки и изменения грузоподьемности.
Реализировать вывод на экран, методы получения значений полей и методы установки значений полей, а также необходимые конструкторы (если это не указано в задании явно).
Конструкторы и методы обязательно должны проверять параметры на допустимость; в случае неправильных данных - выводить значение об ошибке и заканчивать работу. Преобразование в строку реализовать в виде функции преобразования string.

using System;

namespace MyProject
{

    static class Program
    {
        public static int Main(string[] args)
        {
            int power = 0;
            string model = "";
            Console.WriteLine("Input power:");

            try
            {
                power = int.Parse(Console.ReadLine());
            }
            catch
            {
                Console.WriteLine("Wrong data");
                Console.ReadKey();
                return -1;
            }
            Lorry l = new Lorry(power);
            Console.WriteLine(l.ToString());


            Console.WriteLine("Input new model:");

            try
            {
                model = Console.ReadLine();
            }
            catch
            {
                Console.WriteLine("Wrong data");
                Console.ReadKey();
                return -1;
            }
            l.ChangeModel(model);

            Console.WriteLine(l.ToString());
            Console.ReadKey();
            return 0;
        }
    }

    public abstract class Car
    {
        string model;
        int cylinder;
        int power;

        public string Model
        {
            get
            {
                Console.WriteLine("Current Model = {0}.", model);
                return model;
            }
            set
            {
                model = value;
                Console.WriteLine("Change model to {0}.", model);
            }
        }
        public int Cylinder
        {
            get { return cylinder; }
            set { cylinder = value; }
        }

        public int Power
        {
            get
            {
                Console.WriteLine("Current Power = {0}.", power);
                return power;
            }
            set
            {
                power = value;
                Console.WriteLine("Change power to {0}.",power);
            }
        }

        public Car()
        {
            Cylinder = 4;
        }

        public void AssignPower(int p)
        {  
            Console.WriteLine("Change!");
            Power = p;
        }

        public void ChangePower(int p)
        {
            Console.WriteLine("Change!");
            Power += p;
        }

        public override string ToString()
        {

            return "\nSummary:\nModel: " + Model + "\nCylinder: " + Cylinder + "\nPower: " + power+"\n";
        }
    }

    public class Lorry : Car
    {
        int capacity;
        public int Capacity
        {
            get
            {
                return capacity;
            }
            set
            {
                capacity = value;
            }
        }
        public Lorry(int p)
            : base()
        {
            Power = p;
            Model = "PowerModel";
        }

        public Lorry(string model)
            : base()
        {
            Model = model;
            Power = 1;
        }

        public void ChangeModel(string newModel)
        {
            Model = newModel;
        }
    }
}