Loading...
borislav9212 avatar borislav9212 745 Точки

Drawing with Loops Exercises - Diamond

Колеги може ли за малко помощ. при четните числа всичко е ок, задачата работи. При нечетните не мога да измисля как да напиша последния ред ето ми кода   http://pastebin.com/rj7VuTXc

Тагове:
0
Programming Basics 11/03/2016 20:55:50
BonchoBelutov avatar BonchoBelutov 2 Точки

Здравей колега още не съм стигнал до тази задача, но от условието е видно, че още в самото начало след If-else  проверка дали въведеното число е четно или нечетно и по голямо от 2 ще пишеш кода. За случайте при n=1 или n=2 принтираш Console.WriteLine(new string('*'),n);  Задачата е комбинация от кода на задача

3.   Квадрат от звездички и 6.Ромбче от звездички.

Пробвай да опростиш своето решение или започни наново. С два Loop цикъла вързани с N ще я решиш много лесно.Успех и като стигна до нея ще ти пиша пак.

0
11/03/2016 21:11:11
Ralitsa88 avatar Ralitsa88 3 Точки

Здравейте колеги,

моля за помощ!

6-та задача - "Ромбче от звездички" ми се получи до толкова, че печатам на пръв поглед желания резултат, но не на необходимата позиция и с необходимото пространство между звездичките. Ще се радвам ако някои има възможност да погледне и коментира. Ето линк към кода: http://pastebin.com/aTrgaN7r

Предварително благодаря :)

0
22/04/2016 21:38:52
borislav9212 avatar borislav9212 745 Точки

Изместила си ромбчето надолу, затова предполагам ти дава грешка. С new string според мен е много по-лесно.

Виж и моето решение. http://pastebin.com/KQCU9492

2
Ralitsa88 avatar Ralitsa88 3 Точки

Здравей колега, наистина по-надолу се печата, за това не се зачита от judge-a; успях да го повдигна, но space-овете сега не са както трябва...

Благодаря, че сподели твоето решение, ти си го направил дори по-лесно от примера :), стана ми доста по-ясно, определно е по-лесно с new string :) 

Благодаря!

1
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки

Колега, на ред 66 и 68 вместо new string си написал директно да ти рисува само един символ. Като гледам преди това си ползвал new string, така че явно знаеш как работи, и нещо си загубил концентрация и си забравил да го напишеш него. Също така препоръчвам да слагаш скоби за да показваш на програмата каква операция точно искаш да се извърши. В случая (n+1)/2 е различно от n + 1/2. Ред 66 до 69 трябва да изглеждат ето така:

            Console.Write(new string('-', (n - 1) / 2));
            Console.Write('*');
            Console.Write(new string('-', (n - 1) / 2));
            Console.WriteLine();

4
borislav9212 avatar borislav9212 745 Точки

Колега, благодаря ти за отговора. Разконцентрирал съм се нещо, затова съм забравил да напиша new string. А за скобите вече ще ги слагам.

0
KOSTADINMARKOV avatar KOSTADINMARKOV 22 Точки

Kато цяло най-важното нещо ако забравиш да напишеш new string ,няма да ти нарисува абсолютно нищо,дори изобщо може да не ти го допусне от компилатора,а относно кода ,мисля че ти е верен.

0
borislav9212 avatar borislav9212 745 Точки

Аз както го бях написал с двойни кавички се компилира от конзолата и го прочита като единичен символ без изчисленията. Но за да се прочетът изчисленичта е нужен new string и символът тук трябва да е заграден с апострофи, ако са кавички отчита грешка. Кода е верен, само тук се оматах малко и допуснах грешка, но човек се учи от грешките, другият път ще го знам и няма да допускам такива елементарни грешки.

0
KOSTADINMARKOV avatar KOSTADINMARKOV 22 Точки

да има разлика между ' ' и " ".Когато искаш да прочетеш нов стринг то тогава трябва да използваш единичните.

0
davichonov365 avatar davichonov365 127 Точки

А някой забеляза ли че не работи с 1 !!!

0
davichonov365 avatar davichonov365 127 Точки

Аз го натаманих малко : 

if(n==1)
                {
                    Console.WriteLine("*");
                    return;
                }

работи.. :)

0
Elena123456 avatar Elena123456 235 Точки

Здравейте, може ли малко помощ за обърнатия  цикъл в кода ми на тази задача, която е и с най-висока трудност от Глава 6.1. Вложени цикли.

Печатам  правилно само първата 1/2 от диаманта. Изписва ми ето това при опит за стартиране на програмата: Compilation error (line 23, col 14): Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?) и не мога да го оправя.

using System;
                    
public class Program
{
    public static void Main()
    {

var n= int.Parse(Console.ReadLine());
int stars=1;
if (n%2==0) {
stars=2;}   

var firstIndent=(n-stars)/2;
Console.WriteLine(new string('-',firstIndent) + new string('*',stars) + new string('-',firstIndent));
        
for(int row=0;row<Math.Floor((double)(n-1/2));row++) {
var middleIndent=stars+2*row;
Console.Write(new string('-',(firstIndent-1)-row)+"*" + new string('-',middleIndent)+"*"+(new string('-',(firstIndent-1)-row)));
Console.WriteLine();}                                                            // до тук печата правилно


for(int row2=Math.Floor((double)(n-3/2));row2>=0;row2--) {
var middleIndent2=stars+2*row2;
Console.Write(new string('-',(firstIndent-1)-row2)+"*" + new string('-',middleIndent2)+"*"+(new string('-',(firstIndent-1)-row2)));
Console.WriteLine();}        


Console.WriteLine(new string('-',firstIndent) + new string('*',stars) + new string('-',firstIndent));
}        
}


   

Ето и условието на задачата:

Пример: диамант

Да се напише програма, която въвежда цяло число n (1 ≤ n ≤ 100) и печата диамант с размер n, като в следните примери:

Вход Изход Вход Изход Вход Изход
1 * 2 ** 3 -*-
*-*
-*-
Вход Изход Вход Изход Вход Изход
4 -**-
*--*
-**-
5 --*--
-*-*-
*---*
-*-*-
--*--
6 --**--
-*--*-
*----*
-*--*-
--**--
Вход Изход Вход Изход Вход Изход
7 ---*---
--*-*--
-*---*-
*-----*
-*---*-
--*-*--
---*---
8 ---**---
--*--*--
-*----*-
*------*
-*----*-
--*--*--
---**---
9 ----*----
---*-*---
--*---*--
-*-----*-
*-------*
-*-----*-
--*---*--
---*-*---
----*----
0
21/04/2020 02:31:47
Elena123456 avatar Elena123456 235 Точки

Пипнах малко кода и вече нямам проблем с decimal и integer, но пък сега се появи друг проблем.  Въвеждам примерно n=5 и ето резултата. За жалост отново не ми печата втората част на диаманта.

5
--*--
-*-*-
*---*
Run-time exception (line 18): 'count' must be non-negative.
Parameter name: count

Stack Trace:

[System.ArgumentOutOfRangeException: 'count' must be non-negative.
Parameter name: count]
   at System.String.CtorCharCount(Char c, Int32 count)
   at Program.Main() :line 18

 

 

using System;
                    
public class Program
{
    public static void Main()
    {

var n= int.Parse(Console.ReadLine());
int stars=1;
if (n%2==0) {
stars=2;}   

var firstIndent=(n-stars)/2;
Console.WriteLine(new string('-',firstIndent) + new string('*',stars) + new string('-',firstIndent));
        
for(int row=0;row<=(n-1/2);row++) {
var middleIndent=stars+2*row;
Console.Write(new string('-',(firstIndent-1)-row)+"*" + new string('-',middleIndent)+"*"+(new string('-',(firstIndent-1)-row)));
Console.WriteLine();}                                                          


for(int row2=(n-3/2);row2>=0;row2--) {
var middleIndent2=stars+2*row2;
Console.Write(new string('-',(firstIndent-1)-row2)+"*" + new string('-',middleIndent2)+"*"+(new string('-',(firstIndent-1)-row2)));
Console.WriteLine();}

Console.WriteLine(new string('-',firstIndent) + new string('*',stars) + new string('-',firstIndent));
}        
}    

 

 

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