Loading...
Elena123456 avatar Elena123456 235 Точки

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 + - - - - +
| - - - - |
| - - - - |
| - - - - |
| - - - - |
+ - - - - +
Тагове:
0
Programming Basics 15/04/2020 15:39:15
MartinBG avatar MartinBG 4803 Точки
Best Answer

Грешката, която получаваш, е от неправилен аргумент в конструктора на стринга:

new string('- ',n-2)

Първият параметър е от тип char (т.е. един единствен символ), а ти подаваш два символа: '- '.

 

Не съм писал отдавна на C# и може да има и по-удобни начини за решаване на проблема, но като възможен вариант може да използваш String.Join - C# string.Join Examples

Пример:

Console.WriteLine("+ " + string.Join(" ", new string('-', n-2).ToCharArray()) + " +");

Или:

Console.WriteLine(string.Join(" ", ("+" + new string('-', n-2) + "+").ToCharArray()));

 

0
Elena123456 avatar Elena123456 235 Точки

Благодаря, ще ми свърши работа!

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

0
Elena123456 avatar Elena123456 235 Точки

Ето го кода с въпросния метод, но 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()) + " +");
}

}
   

0
MartinBG avatar MartinBG 4803 Точки

Може да видиш каква е грешката в Judge за тази задача, ако отвориш "Details" след като събмитнеш решението си:

Test input: 2

Expected output: + +

Your output:: +  +

 

Както се вижда, проблемът е, че има един допълнителен спейс между двата '+' при вход "2".

При "2" получаваме: "+ " + "" + " +", защото new string('-', 0) ни дава празен стринг (2-2 = 0).

Ако използваш втория формат, който съм ти показал, този проблем ще бъде решен:

Console.WriteLine(string.Join(" ", ("+" + new string('-', n-2) + "+").ToCharArray()));

 

0
Elena123456 avatar Elena123456 235 Точки

Ето още два опита: с метода string.Concat(Enumerable.Repeat("string ", n)) и String.Empty.PadRight и отново нищо. Judge не ми дава точки.

using System;
                    
public class Program
{
    public static void Main()
    {
    
    var n= int.Parse(Console.ReadLine());
 Console.WriteLine("+ "+string.Concat(Enumerable.Repeat('- ', n-2))+"+");
        
    for(int i=0;i<n-2;i++) {
 Console.WriteLine("| "+string.Concat(Enumerable.Repeat('- ', n-2))+"|");}
    
 Console.WriteLine("+ "+string.Concat(Enumerable.Repeat('- ', n-2))+"+");

}

}

 

 

using System;
                    
public class Program
{
    public static void Main()
    {
    
    var n= int.Parse(Console.ReadLine());
    Console.WriteLine("+ "+ String.Empty.PadRight(n-2,'-' )+"+");
        
    for(int i=0;i<n-2;i++) {
    Console.WriteLine("| "+ String.Empty.PadRight( n-2,'-'  )+"|");}
    
    Console.WriteLine("+ "+ String.Empty.PadRight(n-2, '-'  )+"+");

}

}

0
15/04/2020 16:58:57
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.