Софтуерно Инженерство
Loading...
+ Нов въпрос
AlexanderPetkov27 avatar AlexanderPetkov27 -1 Точки

Помощ със задача Sunglasses от Drawing with loops

Здравейте,

с тази задача стигнах до тук и се опитвам да махна празните пространства между рамката на стъклата и дясното стъкло. 

 

[url=https://ibb.co/eSgSk6][img]https://thumb.ibb.co/eSgSk6/Clipboard01.jpg[/img][/url]

 

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

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

            Console.Write("{0}{0}{1}{0}{0}", new string('*', n), new string(' ', n), new string('*', n));
            Console.WriteLine();
            for (int i = 1; i < n - 1; i++)
            {
                Console.Write("*");
                for(int y=0; y<(n*2)-2; y++) //chertae redove
                {
                    Console.Write("/");
                }
                Console.Write("*");
                if (n % 2 == 0 && i < 2)                         //pochva mosta
                {
                    Console.Write("{0}", new string('|', n));
                }
                while (i >= n / 2 && i <= n / 2 && !(n%2==0))
                {
                    Console.Write("{0}", new string('|', n));
                    break;
                }

                Console.Write("{0}", new string(' ', n)); 
                Console.Write("*");                                  //pochva vtoroto stuklo
                for (int y = 0; y < (n * 2) - 2; y++) 
                {
                    Console.Write("/");
                }
                Console.Write("*");

                Console.WriteLine();
               

            }
            
            Console.Write("{0}{0}{1}{0}{0}", new string('*', n), new string(' ', n), new string('*', n)); /// pochva nai dolen red
            Console.WriteLine();
        }
    }
}

Тагове:
ad2bg avatar ad2bg 123 Точки

Заместваш тези редове:

                if (n % 2 == 0 && i < 2)                         //pochva mosta
                {
                    Console.Write("{0}", new string('|', n));
                }
                while (i >= n / 2 && i <= n / 2 && !(n % 2 == 0))
                {
                    Console.Write("{0}", new string('|', n));
                    break;
                }
                Console.Write("{0}", new string(' ', n));

 

с тези:

                if (i == Math.Ceiling((double)(n - 2) / 2)) { Console.Write( new string('|', n)); }
                else { Console.Write(new string(' ', n)); }

0
ad2bg avatar ad2bg 123 Точки

Или може само с един ред, макар че е една идея по-трудно четимо:

Console.Write(new string(i == Math.Ceiling((double)(n - 2) / 2) ? '|' : ' ', n));

0