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

Drawing with Loops Exercises - Diamond

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

Тагове:
0
Programming Basics 11/03/2016 20:55:50
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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.