Drawing with Loops Exercises - Diamond
Колеги може ли за малко помощ. при четните числа всичко е ок, задачата работи. При нечетните не мога да измисля как да напиша последния ред ето ми кода http://pastebin.com/rj7VuTXc
Колеги може ли за малко помощ. при четните числа всичко е ок, задачата работи. При нечетните не мога да измисля как да напиша последния ред ето ми кода http://pastebin.com/rj7VuTXc
Здравей колега още не съм стигнал до тази задача, но от условието е видно, че още в самото начало след If-else проверка дали въведеното число е четно или нечетно и по голямо от 2 ще пишеш кода. За случайте при n=1 или n=2 принтираш Console.WriteLine(new string('*'),n); Задачата е комбинация от кода на задача
3. Квадрат от звездички и 6.Ромбче от звездички.
Пробвай да опростиш своето решение или започни наново. С два Loop цикъла вързани с N ще я решиш много лесно.Успех и като стигна до нея ще ти пиша пак.
Колега, на ред 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();
Колега, благодаря ти за отговора. Разконцентрирал съм се нещо, затова съм забравил да напиша new string. А за скобите вече ще ги слагам.
Kато цяло най-важното нещо ако забравиш да напишеш new string ,няма да ти нарисува абсолютно нищо,дори изобщо може да не ти го допусне от компилатора,а относно кода ,мисля че ти е верен.
Аз както го бях написал с двойни кавички се компилира от конзолата и го прочита като единичен символ без изчисленията. Но за да се прочетът изчисленичта е нужен new string и символът тук трябва да е заграден с апострофи, ако са кавички отчита грешка. Кода е верен, само тук се оматах малко и допуснах грешка, но човек се учи от грешките, другият път ще го знам и няма да допускам такива елементарни грешки.
да има разлика между ' ' и " ".Когато искаш да прочетеш нов стринг то тогава трябва да използваш единичните.
Ето го и моето алтернативно решение: http://pastebin.com/DvfQxVMH
Голяма играчка бе таз задачка!
А някой забеляза ли че не работи с 1 !!!
Ако говориш за задачата Perfect Diamond, тук е обяснен проблемът: https://softuni.bg/forum/10862/09-perfect-diamond-from-sample-coding-101-exam-jan-2016
Аз го натаманих малко :
if(n==1)
{
Console.WriteLine("*");
return;
}
работи.. :)
Моето решение -> http://pastebin.com/4UBzsZi9
Здравейте, може ли малко помощ за обърнатия цикъл в кода ми на тази задача, която е и с най-висока трудност от Глава 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 | ----*---- ---*-*--- --*---*-- -*-----*- *-------* -*-----*- --*---*-- ---*-*--- ----*---- |
Пипнах малко кода и вече нямам проблем с 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));
}
}
Здравейте колеги,
моля за помощ!
6-та задача - "Ромбче от звездички" ми се получи до толкова, че печатам на пръв поглед желания резултат, но не на необходимата позиция и с необходимото пространство между звездичките. Ще се радвам ако някои има възможност да погледне и коментира. Ето линк към кода: http://pastebin.com/aTrgaN7r
Предварително благодаря :)
Изместила си ромбчето надолу, затова предполагам ти дава грешка. С new string според мен е много по-лесно.
Виж и моето решение. http://pastebin.com/KQCU9492
Здравей колега, наистина по-надолу се печата, за това не се зачита от judge-a; успях да го повдигна, но space-овете сега не са както трябва...
Благодаря, че сподели твоето решение, ти си го направил дори по-лесно от примера :), стана ми доста по-ясно, определно е по-лесно с new string :)
Благодаря!