Square Frame from Nested Loops- използване на метод за добавяне на space към string
Здравейте, имам проблем със следната задача или по-скоро с добавянето на празно пространство към стринг. Разбрах за метода String.Concat , но не зная как да го използвам и дали именно този метод ще ми свърши работа. Моля за помощ, защото с метод new string не се получава.
Ето го и кода ми:
using System;
public class Program
{
public static void Main()
{
var n= int.Parse(Console.ReadLine());
Console.WriteLine("+ "+new string('- ',n-2)+"+");
for(int i=0;i<n-2;i++) {
Console.WriteLine("| "+new string('- ',n-2)+"|");}
Console.WriteLine("+ "+new string('- ',n-2)+"+");
}
}
Example: Square Frame
Write a program that takes a positive integer n and draws on the console a square frame with a size of n * n.
Input | Output | Input | Output |
---|---|---|---|
3 | + - + | - | + - + |
4 | + - - + | - - | | - - | + - - + |
Input | Output | Input | Output |
---|---|---|---|
5 | + - - - + | - - - | | - - - | | - - - | + - - - + |
6 | + - - - - + | - - - - | | - - - - | | - - - - | | - - - - | + - - - - + |
Благодаря, ще ми свърши работа!
Ако все пак се сетите и за някакъв друг начин, моля да споделите.
Ето го кода с въпросния метод, но Judge дава само 83/100. Възможно ли е проблема да си е от Judge?
using System;
public class Program
{
public static void Main()
{
var n= int.Parse(Console.ReadLine());
Console.WriteLine("+ " + string.Join(" ", new string('-', n-2).ToCharArray()) + " +");
for(int i=0;i<n-2;i++) {
Console.WriteLine("| " + string.Join(" ", new string('-', n-2).ToCharArray())+ " |");}
Console.WriteLine("+ " + string.Join(" ", new string('-', n-2).ToCharArray()) + " +");
}
}
Може да видиш каква е грешката в Judge за тази задача, ако отвориш "Details" след като събмитнеш решението си:
Test input: 2
Expected output: + +
Your output:: + +
Както се вижда, проблемът е, че има един допълнителен спейс между двата '+' при вход "2".
При "2" получаваме: "+ " + "" + " +", защото new string('-', 0) ни дава празен стринг (2-2 = 0).
Ако използваш втория формат, който съм ти показал, този проблем ще бъде решен:
Дааа, стана! :))
Значи с този нов метод в момента добавям " " след всеки стринг в съответните скоби.
Разбрах и защо ми се получаваше допълнителен " " в по-горния ми код.
Много благодаря за отделеното време!
Интересното е, че при мен в Judge не винаги ми показва точно къде ми е грешката, а само ми изписва "Incorect answer" в червено. След като отворя "Details" в повечето случаи виждам само кода си и без възможност за корекция.
Ето го и правилния код:
using System;
public class Program
{
public static void Main()
{
var n= int.Parse(Console.ReadLine());
Console.WriteLine(string.Join(" ", ("+" + new string('-', n-2) + "+").ToCharArray()));
for(int i=0;i<n-2;i++) {
Console.WriteLine(string.Join(" ", ("|" + new string('-', n-2) + "|").ToCharArray()));}
Console.WriteLine(string.Join(" ", ("+" + new string('-', n-2) + "+").ToCharArray()));
}
}
Хубава вечер и още веднъж благодаря!