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

Programming Basic Exam - 17 July 2016 - Задача 05.Diamond

Здравейте! Може ли малко помощ за 5-та задача от изпита? Конзолата ми принтира само до Console.WriteLine(new string('*', w)); включително, но долната част на фигурата не. Ето и кода:

using System;

class Program
{
  static void Main()
  {
    int n = int.Parse(Console.ReadLine());
    
    var h = (3 * n) + 2;
    var w = 5 * n;
    
    Console.WriteLine("{0}{1}{0}", new string('.', n), new string('*', 3 * n));
    
    for (var i = 2; i <= n; i++)
    {
      var middleDots = (w - (2 * ((n - i) + 1))) - 2;
      
      Console.WriteLine("{0}*{1}*{0}", new string('.', ((n - i) + 1)), new string('.', middleDots));
       
    }
    
    Console.WriteLine(new string('*', w));
    
    for (var i = n - 2; i > n; i--)
    {
      var middleDots = (w - (2 * ((n - i) + 1))) - 2;
      
      Console.WriteLine("{0}*{1}*{0}", new string('.', ((n - i) + 1)), new string('.', middleDots));
    }
    
  }
}

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

Не влиза в условието на долния цикъл! n -2 няма как да е по-голяма от n.

0
22/07/2016 11:41:30
chradoslavova avatar chradoslavova 25 Точки

Благодаря! Не го бях съобразила и го поправих със следното: for (var i = n + 1; i > (h - (n + 1)); i++), но пак не ми се получава. Явно или трябва да помисля още малко, или имам и друга грешка в кода.

0
vancho avatar vancho 430 Точки

Ето, как трябва да ти е долната част от задачата. Тествах я в judge и дава 100 т. 

 

            Console.WriteLine(new string('*', w));

            int outerDots = 1;
            int innerDots = w - 4;

            for (int i = 0; i < h - (n + 2); i++)
            {
                Console.WriteLine("{0}*{1}*{0}", new String('.', outerDots), new String('.', innerDots));
                outerDots++;
                innerDots -=2;
            }

            Console.WriteLine("{0}*{1}*{0}", new String('.', outerDots), new String('*', innerDots));

 

п.с. Това ми бяха любимите задачки! Поздрави.

 

 

-1
22/07/2016 15:41:17
chradoslavova avatar chradoslavova 25 Точки

Благодаря за помощта. На този тип задачки винаги се затруднявам. Тази, например, я решавам вече втори ден. :D

0
koksibg avatar koksibg 892 Точки

Виж моя код - но малко съм си поиграл и работи и с отр. числа и мин. стойност не съм я направил да е 4 като е в условието а

2 ( малко подобрения) - иначе работи - перфектно....

http://pastebin.com/rsRXeMb8

Горната част е като на знак STOP - да се нарисува знака при опр. вход от конзолата ето го и него:

STOP:

http://pastebin.com/8K5VJrCW

0
chradoslavova avatar chradoslavova 25 Точки

Благодаря! За задачата със знака STOP се бях сетила и аз, помогна ми доста за първата част, но натам - греда! :D

0
dilqna9 avatar dilqna9 44 Точки

Ето така няма проблеми дава 100 точки

using System;
using System.Collections.Generic;
using System.Linq;
            
public class Program
{
  public static void Main()
  {
    int n = int.Parse(Console.ReadLine());
    
    var h = (3 * n) + 2;
    var w = 5 * n;
    
    Console.WriteLine("{0}{1}{0}", new string('.', n), new string('*', 3 * n));
    
    for (var i = 2; i <= n; i++)
    {
      var middleDots = (w - (2 * ((n - i) + 1))) - 2;
      
      Console.WriteLine("{0}*{1}*{0}", new string('.', ((n - i) + 1)), new string('.', middleDots));
       
    }
    
    Console.WriteLine(new string('*', w));
    
    for (var i = 2*n; i > 0; i--)
    {
      var middleDots = 5*n-2-(2*(2*n-i+1));
      
      Console.WriteLine("{0}*{1}*{0}", new string('.', 2*n-i+1), new string('.', middleDots));
    }
    
     Console.Write(new string('.',2*n+1));
     Console.Write(new string('*',5*n-(2*(2*n+1))));
     Console.Write(new string('.',2*n+1));
     Console.WriteLine();    
  }
}
 

0
chradoslavova avatar chradoslavova 25 Точки

Thanks! Ако бях забелязала малко по-рано, че втората част на фигурата е 2 * n щеше да е супер! :D

1