Drawing with Loops Exercises - Diamond
Колеги може ли за малко помощ. при четните числа всичко е ок, задачата работи. При нечетните не мога да измисля как да напиша последния ред ето ми кода http://pastebin.com/rj7VuTXc
Колеги може ли за малко помощ. при четните числа всичко е ок, задачата работи. При нечетните не мога да измисля как да напиша последния ред ето ми кода http://pastebin.com/rj7VuTXc
Здравейте, може ли малко помощ за обърнатия цикъл в кода ми на тази задача, която е и с най-висока трудност от Глава 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));
}
}