Професионална програма
Loading...
borislav9212 avatar borislav9212 743 Точки

Drawing with Loops Exercises - Diamond

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

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

Здравейте, може ли малко помощ за обърнатия  цикъл в кода ми на тази задача, която е и с най-висока трудност от Глава 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 167 Точки

Пипнах малко кода и вече нямам проблем с 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