TelerikAcademyExam1@24June2013Morning

Условията на задачите може да намерите в:
BGCoder или в Студетската Система на Телерик.

Всички мои решения са искарали резултат 100/100.

Проверка на вашите решения може да направите в BGCoder, като преди това се изисква регистрация.

1.Garden

Обясенение: За всеки от 6те зеленчука се въвеждат броя на семената и на каква площ ще се засаждат, с изключение на beans(боб), за който се въвеждат само броя на семената. Изчислява се общата цена (totalCost), като броя на семената на всеки един зеленчук се умножи с цената за едно семе, и накрая стойностите се съберат. Тъй като площта на боба не е известна, тя се намира като се съберат стойностите за площ на останалите заленчуци. Ако получената стойност е по-малка от 250 (което е максималната площ) се определя площта на боба, като от 250 се извади сумата от площта на останалите зеленчуци.

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

namespace _1.Garden
{
    class Program
    {
        static void Main(string[] args)
        {
            uint tomatoeSeed = uint.Parse(Console.ReadLine());
            uint tomatoeArea = uint.Parse(Console.ReadLine());
            uint cucumberSeed = uint.Parse(Console.ReadLine());
            uint cucumberArea = uint.Parse(Console.ReadLine());
            uint potatoeSeed = uint.Parse(Console.ReadLine());
            uint potatoeArea = uint.Parse(Console.ReadLine());
            uint carrotSeed = uint.Parse(Console.ReadLine());
            uint carrotArea = uint.Parse(Console.ReadLine());
            uint cabbageSeed = uint.Parse(Console.ReadLine());
            uint cabbageArea = uint.Parse(Console.ReadLine());
            uint beanSeed = uint.Parse(Console.ReadLine());

            double totalCost = ((tomatoeSeed * 0.5) + (cucumberSeed * 0.4) + (potatoeSeed * 0.25) + (carrotSeed * 0.6) + (cabbageSeed * 0.3) + (beanSeed * 0.4));
            Console.WriteLine("Total costs: {0:0.00}", totalCost);

            if ((tomatoeArea + cucumberArea + potatoeArea + carrotArea + cabbageArea) > 250)
            {
                Console.WriteLine("Insufficient area");
            }
            if ((tomatoeArea + cucumberArea + potatoeArea + carrotArea + cabbageArea) == 250)
            {
                Console.WriteLine("No area for beans");
            }
            if ((tomatoeArea + cucumberArea + potatoeArea + carrotArea + cabbageArea) < 250)
            {
                Console.WriteLine("Beans area: {0}", (250 - (tomatoeArea + cucumberArea + potatoeArea + carrotArea + cabbageArea)));
            }
        }
    }
}

2.The secrets of numbers

Обяснение: Въвежда се числото n, което е от тип BigInteger. Ако n е по-малко от 0, знака му се обръща. Конвертирам n към string формат, и го записвам в променливата stringNumber. Завъртам един цикъл на обратно и извличам всяка цифра на числото n, и я записвам в променлива digit. Извличането става с метода GetNumericValue, на класа Char и след това каствам към int. Съгласно условието определям дали цифрата е на четна или нечетна позиция и определям специалната сума (specialSum) и принтирвам на конзолата. За дължината на secret alpha-sequence, в променлива length записвам последната цифра от specialSum, като specialSum се раздели на 10 и се вземе остатъка. В цикъл увеличавам стойността на брояча, ако достигне до 26, брояча се нулите и започва да се увеличава на ново. Във втори цикъл извличам буквата, записана на индекса равен на стойността на брояча.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Numerics;

namespace _2.TheSecretsOfNumbers
{
    class Program
    {
        static void Main(string[] args)
        {
            BigInteger n = BigInteger.Parse(Console.ReadLine());

            if (n < 0)
            {
                n *= -1;
            }

            string stringNumber = Convert.ToString(n);
            int digit = 0;
            int specialSum = 0;
            int digitPosition = 1;

            string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            int length = 0;
            int counter = 0;

          
            for (int i = stringNumber.Length - 1; i >= 0; i--)
            {
                digit = (int)Char.GetNumericValue(stringNumber[i]);

                // If position of digit is odd
                if (digitPosition % 2 != 0)
                {
                    digit = digit * (int)Math.Pow(digitPosition, 2);
                }

                // If position of digit is even
                else if (digitPosition % 2 == 0)
                {
                    digit = (int)Math.Pow(digit, 2) * digitPosition;
                }

                specialSum += digit;
                digitPosition++;
            }
            Console.WriteLine(specialSum);

            // Secret alpha-sequence
            length = specialSum % 10;

            if (length == 0)
            {
                Console.Write("{0} has no secret alpha-sequence", n);
            }
            else
            {
                for (int i = 1; i <= specialSum; i++)
                {
                    if (counter == 26)
                    {
                        counter = 0;
                    }
                    counter++;
                }

                for (int i = 1; i <= length; i++)
                {
                    if (counter == 26)
                    {
                        counter = 0;
                    }
                    Console.Write(alphabet[counter]);
                    counter++;
                }
            }
            Console.WriteLine();
        }
    }
}

3.Card Wars

Обяснение: За всеки от двамата играчи има цикъл, който се върти 3 пъти, въвежда се карта и се изчисляват текущите точки на двамата играчи за всяка игра. Ако на някой от двамата му се падне карта X, се вдига флаг. След края на текущата игра се правята съответните проверки. Ако един от двамата изтегли карта Х, цикъла с прекъсва и се извежда съобщение за грешка. Ако и двамата истеглят Х картата, получават по 50 точки. В противен случай (ако никой не изтегли Х картата) се ставняват текущите точки на двамата играчи и се определя победителя за текущата игра, след края на игрите се сравняват максималните точки на двамата играчи и се извежда съответното съобщение.

using System;
using System.Numerics;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _3.CardWars
{
    class Program
    {
        
        static void Main(string[] args)
        {
            // Games in match
            int n = int.Parse(Console.ReadLine());

            BigInteger firstPlayerMaxScore = 0;
            BigInteger secondPlayerMaxScore = 0;
            int firstPlayerGamesWon = 0;
            int secondPlayerGamesWon = 0;
            bool firstPlayerXcard = false;
            bool secondPlayerXcard = false;

            // Games count
            for (int i = 1; i <= n; i++)
            {
                int firstPlayerCurrenrScore = 0;
                int secondPlayerCurrentScore = 0;

                //First player
                for (int j = 1; j <= 3; j++)
                {
                    string card = Console.ReadLine();

                    switch (card)
                    {
                        case "2":
                            firstPlayerCurrenrScore += 10;
                            break;
                        case "3":
                            firstPlayerCurrenrScore += 9;
                            break;
                        case "4":
                            firstPlayerCurrenrScore += 8;
                            break;
                        case "5":
                            firstPlayerCurrenrScore += 7;
                            break;
                        case "6":
                            firstPlayerCurrenrScore += 6;
                            break;
                        case "7":
                            firstPlayerCurrenrScore += 5;
                            break;
                        case "8":
                            firstPlayerCurrenrScore += 4;
                            break;
                        case "9":
                            firstPlayerCurrenrScore += 3;
                            break;
                        case "10":
                            firstPlayerCurrenrScore += 2;
                            break;
                        case "A":
                            firstPlayerCurrenrScore += 1;
                            break;
                        case "J":
                            firstPlayerCurrenrScore += 11;
                            break;
                        case "Q":
                            firstPlayerCurrenrScore += 12;
                            break;
                        case "K":
                            firstPlayerCurrenrScore += 13;
                            break;
                        case "Z":
                            firstPlayerMaxScore *= 2;
                            break;
                        case "Y":
                            firstPlayerMaxScore -= 200;
                            break;
                        case "X":
                            firstPlayerXcard = true;
                            break;

                        default:
                            break;
                    }
                }

                // Second player
                for (int j = 1; j <= 3; j++)
                {
                    string card = Console.ReadLine();

                    switch (card)
                    {
                        case "2":
                            secondPlayerCurrentScore += 10;
                            break;
                        case "3":
                            secondPlayerCurrentScore += 9;
                            break;
                        case "4":
                            secondPlayerCurrentScore += 8;
                            break;
                        case "5":
                            secondPlayerCurrentScore += 7;
                            break;
                        case "6":
                            secondPlayerCurrentScore += 6;
                            break;
                        case "7":
                            secondPlayerCurrentScore += 5;
                            break;
                        case "8":
                            secondPlayerCurrentScore += 4;
                            break;
                        case "9":
                            secondPlayerCurrentScore += 3;
                            break;
                        case "10":
                            secondPlayerCurrentScore += 2;
                            break;
                        case "A":
                            secondPlayerCurrentScore += 1;
                            break;
                        case "J":
                            secondPlayerCurrentScore += 11;
                            break;
                        case "Q":
                            secondPlayerCurrentScore += 12;
                            break;
                        case "K":
                            secondPlayerCurrentScore += 13;
                            break;
                        case "Z":
                            secondPlayerMaxScore *= 2;
                            break;
                        case "Y":
                            secondPlayerMaxScore -= 200;
                            break;
                        case "X":
                            secondPlayerXcard = true;
                            break;

                        default:
                            break;
                    }
                }

                // If x card is drawn
                if (firstPlayerXcard == true && secondPlayerXcard == true)
                {
                    firstPlayerMaxScore += 50;
                    secondPlayerMaxScore += 50;

                    firstPlayerXcard = false;
                    secondPlayerXcard = false;
                }
                else if (firstPlayerXcard == true)
                {
                    break;
                }                  
                else if (secondPlayerXcard == true)
                {
                    break;
                }

                if (firstPlayerCurrenrScore > secondPlayerCurrentScore)
                {
                    firstPlayerMaxScore += firstPlayerCurrenrScore;
                    firstPlayerGamesWon++;
                }
                else if (firstPlayerCurrenrScore < secondPlayerCurrentScore)
                {
                    secondPlayerMaxScore += secondPlayerCurrentScore;
                    secondPlayerGamesWon++;
                }
            }

            if (firstPlayerXcard == true)
            {
                Console.WriteLine("X card drawn! Player one wins the match!");
            }
            else if (secondPlayerXcard == true)
            {
                Console.WriteLine("X card drawn! Player two wins the match!");
            }
            else if (firstPlayerMaxScore > secondPlayerMaxScore)
            {
                Console.WriteLine("First player wins!");
                Console.WriteLine("Score: {0}", firstPlayerMaxScore);
                Console.WriteLine("Games won: " + firstPlayerGamesWon);
            }
            else if (firstPlayerMaxScore < secondPlayerMaxScore )
            {
                Console.WriteLine("Second player wins!");
                Console.WriteLine("Score: {0}", secondPlayerMaxScore);
                Console.WriteLine("Games won: " + secondPlayerGamesWon);
            }
            else
            {
                Console.WriteLine("It's a tie!");
                Console.WriteLine("Score: {0}", firstPlayerMaxScore);
            }
        }
    }
}

4.Bat Goiko Tower

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

namespace _4.BatGoikoTower
{
    class Program
    {
        static void Main(string[] args)
        {
            uint h = uint.Parse(Console.ReadLine());
            uint sideCounter = h - 1;
            int symbolCounter = 2;
            char symbol = ' ';
            int dotSymbol = 0;
            int lineSymbol = 0;

            for (int i = 1; i <= h; i++)
            {
                // Left side
                for (int j = 1; j <= sideCounter; j++)
                {
                    Console.Write('.');
                }
                Console.Write('/');

                // Inside
                if (i >= 2)
                {
                    if (lineSymbol == dotSymbol)
                    {
                        symbol = '-';
                        lineSymbol++;
                        dotSymbol = 0;
                    }
                    else
                    {
                        symbol = '.';
                        dotSymbol++;
                    }

                    for (int j = 1; j <= 1; j++)
                    {
                        for (int c = 1; c <= symbolCounter; c++)
                        {
                            Console.Write(symbol);
                        }
                        symbolCounter += 2;
                    }
                }
                
                // Right side
                Console.Write('\\');
                for (int j = 1; j <= sideCounter; j++)
                {
                    Console.Write('.');
                }
                sideCounter--;
                Console.WriteLine();
            }
        }
    }
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s