Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- class NewHouse
- {
- static void Main()
- {
- // въвеждаме височина на етажите на къщата
- int input = int.Parse(Console.ReadLine());
- // правиме си нов стринг които ще използваме за първият ред на покрива
- // върхът на покрива се състои от символи '-' от едната страна , символ '*' в средата и пак символи '*'
- // къщата е широка колкото е и висока(етажите без покрива) , затова използваме input/2 за да намериме
- // средата(със закръгляне (-1) заради int). На мястото на това закръгляне ще сложиме символ '*'
- string firstSpace = new string ('-', input/2);
- // този стринг ще бъде върхът на къщата и ще компенсира загубата от -1 при горното деление
- string roofFirstLine = "*";
- // отпечатваме първия ред на къяата (покрива)
- Console.WriteLine(firstSpace + roofFirstLine + firstSpace);
- // for the roof
- // сега отпечатваме останалата част от покрива като тои е висок 1/2 от етажите на къщата
- // със закръгляне на +1 (7 / 2 = 3.5 = (4)). тъй като вече имаме отпечата порвият ред
- // на покрива, искаме да отпечатиме -1 ред, затова "брояча" counter започва от 1 и спира докато се
- // изравни с 1/2 от input (7 / 2 = 3, "1 <= 3, 2 <= 3, 3 <=3" резултата е 3 завъртаня при вход 7)
- for (int counter = 1; counter <= input/2; counter++)
- {
- // със всяко завъртане на цикъла си правиме нов стринг за "празното" място около покрива с символа '-'
- // а разтоянието на всеки ред намалява с по -1 от всяка страна. Тука използваме същия начин както при първия
- // ред само че видиме стойността на counter която с всяко завъртане е с 1 по голяма
- // (при вход от "7" >> 7/2 = 3 - counter = 2 >> 3 - counter = 1 >> 3 - counter = 0)
- string space = new string('-',((input/2)-(counter)));
- // по същия начин правиме нов стринг с всяко завъртане на цикъла за самия покрив, като
- // трябва да увеличаваме ширината и от двете страни. С всяко завъртане на цикъла counter е с 1 по голям от
- // преди, затова е удобно да се ползва при създаването на стринга където :
- // (при вход 7 цикъла се изпълнява 3 пъти или >> (1*2)+1 = 3(***) >> (2*2)+1=5(*****) >> (3*2)+1 = 7(******))
- string roof = new string('*', (counter*2)+1);
- // със всяко завъртане печатаме следващия ред в кобинация растояния покрив растояния
- Console.WriteLine(space + roof + space);
- }
- //for the body
- // входа ни е височината на етажите затова искаме цикъла да се изпълни толкова пъти колкото е входа input
- for (int counter = 1; counter <= input; counter++)
- {
- // етажите са широки колкото и високи, но започват и завършват с символ '|' затова си правиме
- // нов стринг от входа - 2 символа (input 7 >> 7 - 2 = 5 (*****))
- string body = new string('*', input - 2);
- // отпечатваме широчината на етажите с body стринга , като в началоъо и края печатаме '|'
- // (вход 7 = 7 пъти отпечатано |*****| = 7 символа на ред)
- Console.WriteLine("|" + body + "|");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement