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

Programming basics - март 2016 - Kвадрат от звездички

Здравейте

За тази задача от домашната , написахследното решение:

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

namespace Square_of_Stars
{
    class SquareOfStars
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            if (a == 3)
            {
                Console.WriteLine("***");
                Console.WriteLine("* *");
                Console.WriteLine("***");
            }
            if ( a == 4)
            {
                Console.WriteLine("****");
                Console.WriteLine("* *");
                Console.WriteLine("* *");
                Console.WriteLine("****");
            }
            if ( a == 5)
            {
                Console.WriteLine("*****");
                Console.WriteLine("* *");
                Console.WriteLine("* *");
                Console.WriteLine("* *");
                Console.WriteLine("*****");
             }
            else
            {
                Console.WriteLine("Not valid number");
            }
    
            }
        }
    }

           Във Visual Studio всичко си работи добре , но Judge системата ми дава 0 точки.Задължително ли е задачата да се реши с цикъла "for" и заради това ли Judge системата не ми дава точки?

 

Тагове:
InaPanova avatar InaPanova 28 Точки
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SquareOfStars
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            for (int row = 0; row < n; row++)
            {
                for (int col = 0; col < n; col++)
                {
                    Console.Write("* ");
                }
                Console.WriteLine();
            }
        }
    }
}

Да, много по-добре е с два for-а, защото ти тук така го ограничаваш да печата до 5, а и твоето работи вмомента само за а = 3, ако искаш да печаташ a = 5 трябва да набиеш интервали същото и за 4-ката. Ето ако се затрудниш моето решение. 

Ето така работи твоето за 4 и 5, но няма да ти даде точки в judge    

if ( a == 4)
            {
                Console.WriteLine("****");
                Console.WriteLine("*  *");
                Console.WriteLine("*  *");
                Console.WriteLine("****");
            }
            if ( a == 5)
            {
                Console.WriteLine("*****");
                Console.WriteLine("*    *");
                Console.WriteLine("*    *");
                Console.WriteLine("*    *");
                Console.WriteLine("*****");
             }

3
borislav9212 avatar borislav9212 745 Точки

Задължително трябва да се направи с for цикъл, за да работи с всяко число, което му подадеш на входа. Няма смисъл от тези проверки който правиш, защото входа не се знае, той е " N " число. Ако числото е 1000, трябва да правиш 1000 проверки. затова има цикли. При теб работи защото въвеждаш само 3,4,5, а условието на задачата е друго и затова Judga дава грешки. Четеш едно число от конзолата, правиш два вложени цикъла, първият e row, който ти е за редовете(започва от 0 до n), а вторият за колоните (започва от 0 до n) и вътре отпечатваш звездичката

1
11/04/2016 00:55:46
borislav9212 avatar borislav9212 745 Точки

Вътрешноста на квадрата празна ли трябва да е. Ние ти показахме запълнен с звездички. Като гледам, как си го направила, се сетих че имаше и такава задача в една домашна. Ето по този начин е празен квадрата http://pastebin.com/gvrHxDC6

2
Shirdor avatar Shirdor 130 Точки

Аз бих я направил така

int a = int.Parse(Console.ReadLine());

Console.WriteLine("{0}", new string('*', a));

     for (int i = 0; i < a - 2; i++)
                {
                    Console.WriteLine("{0}{1}{0}", new string('*', a), new string(' ', a - 2));
                }

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

0
borislav9212 avatar borislav9212 745 Точки

Само не разбирам, защо слагаш " Place holderi ". Може ли да ми обясниш? Това което си написал в момента изкарва на конзолата два квадрата с тези " Place holderi " , първият е правилен n x n звездички а от втория няма нужда в тази задача(който е n колони и n - 2 реда) и Judge няма да я приеме за вярна. Ако ги махнеш тези " Place holderi ", задачата става вярна. Тази задача, която обсъждаме в момента е квадрат от звездички(запълнен със звездички), а на нея и трябва вътрешността на квадрата да е празна, последната задача от First Steps In Coding, тоест кода който дадох по горе.

0
Shirdor avatar Shirdor 130 Точки

Объркал съм във фора. Там където е Console.WriteLine();трябва да е Console.WriteLine("{0}{1}{0}", new string('*',1), new string(' ',a-2)) a placeholder арите ги ползвм за да не пиша три пъти нов стринг

2
borislav9212 avatar borislav9212 745 Точки

Една грешка променя цалата задача, Благодаря за пояснението. до този момент не бях решавал задачи с чертаене, в които, в new string да използвам placeholder. Научих нещо ново.

0