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));
}
}