Професионална програма
Loading...
+ Нов въпрос
kiril_hr avatar kiril_hr 0 Точки

Programming Basic Exam - 17 July 2016 Diamond

Здравейте! Можете ли да ми кажете защо не ми дава 100 точки при положение, че това което излиза на конзолата и това в условието на задачата е едно и също. Или не съм видял някъв малък детайл.

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

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

            int width = 5 * n;
            int height = 3 * n + 2;

            //first part
            Console.WriteLine("{0}{1}{0}", new string('.', n), new string('*', n*3));

            //second part
            int points = n - 1;
            int middlepoints = n * 3;
            for (int i = 0; i < n-1; i++)
            {
                
                Console.WriteLine("{0}*{1}*{0}", new string('.', points), new string('.', middlepoints));
                points -= 1;
                middlepoints += 2;
            }

            //third part
            Console.WriteLine("{0}", new string('*', width));

            //fourth part
            int points1 = 1;
            int middlepoints1 = width - 4;
            for (int i = 1; i < 2*n + 1; i++)
            {
                Console.WriteLine("{0}*{1}*{0}", new string('.', points1), new string('.', middlepoints1));
                points1 += 1;
                middlepoints1 -= 2;
            }


            if (n % 2 == 0)
            {
                Console.WriteLine("{0}{1}{0}", new string('.', 2 * n + 1), new string('*', n / 2));
            }
            else
            {
                Console.WriteLine("{0}{1}{0}", new string('.', 2 * n + 1), new string('*', width - height - n));
            }
        }
    }
}
 

Тагове:
0
Programming Basics
vancho avatar vancho 430 Точки

В принтирането на последната част (задай 12 като вход и ще видиш къде бъркаш):

           //if (n % 2 == 0)
           // {
           //     Console.WriteLine("{0}{1}{0}", new string('.', 2 * n + 1), new string('*', n / 2));
           // }
           // else
           // {
                Console.WriteLine("{0}{1}{0}", new string('.', 2 * n + 1), new string('*', width - height - n));
           // }

 

остави само това в else и дава 100 от 100 т.

-1
18/08/2016 14:10:17
kiril_hr avatar kiril_hr 0 Точки

Благодаря. Всичко е наред. Всъщност, направил съм не нужни неща.

0
DimitarKarev avatar DimitarKarev 86 Точки

Ето алтернативно решение от мен:

            var n = int.Parse(Console.ReadLine());
            var p = 0;
            Console.WriteLine("{0}{1}{0}",new string('.',n) ,new string('*', 3 * n));
            for (int row = 1; row < n; row++)
            {
            Console.WriteLine("{0}*{1}*{0}",new string('.', n - row), new string('.', 3 * n + p));
             p += 2;
            }
            Console.WriteLine(new string('*', 5 * n)); p = 0;
            for (int row = 1; row <= 2* n ; row++)
            {
            Console.WriteLine("{0}*{1}*{0}",new string('.',row), new string('.', 5 * n - 4 - p));
             p += 2;
            }
            Console.WriteLine("{0}{1}{0}",new string('.', (4 * n + 2)/2), new string('*', n - 2));

0
notarobot avatar notarobot 7 Точки

мда ,ето го и мойто на 100 точки вярно : 

 var n = int.Parse(Console.ReadLine());

            var dot =  n;
            var lenght = 5 * n;

            Console.WriteLine("{0}{1}{0}", new string ('.', dot), new string ('*', lenght - dot * 2));
            for (int i = 0; i < n-1; i++)
            {               
                Console.WriteLine("{0}*{1}*{0}", new string('.', --dot), new string('.', lenght - dot * 2 - 2));  
            }
            Console.WriteLine("{0}", new string ('*', lenght));
            for (int i = 1; i < 2 * n + 1; i++)
            {
                var point = i;
                var midPoint = lenght - (point * 2) - 2;
                Console.WriteLine("{0}*{1}*{0}", new string('.', point), new string('.', midPoint ));                                                        
            }
            var midPoint2 = n - 2;
            Console.WriteLine("{0}{1}{0}",new string('.',2 * n +1), new string('*',midPoint2)); 

0
Miroslav_Kisov avatar Miroslav_Kisov 60 Точки

Решение https://pastebin.com/BLb7kJf9

0