Loading...
Rexa14 avatar Rexa14 0 Точки

Печатане на триъгълник от 55 звездички

Направих го така:

  
           

for (int i = 1; i <= 10; i++) ;
{
    Console.WriteLine(new string('*',i));
}

 

дава ми грешка:     The name 'i' does not exist in the current context    

Направих го и така:

  {
            for (int row = 0; row <= 10; row++) 
            {
                for (int col = 0; col<row; col++)
                {
                    Console.Write('*');
                    {
                        Console.WriteLine();
                    }
                }
            }
        }

Получиха ми се 55 реда с по една *

 

Къде греша? В първото решение какво означава, че I не съществува в настоящия контекст?

Тагове:
0
Programming Basics 16/09/2016 09:16:05
uzunovz avatar uzunovz 61 Точки

Привет,

В първия пример ма сте забравили един знак ";" преди тялото на for цикъла и затова.

Трябва да е така:
            for (int i = 1; i <= 10; i++)
            {
                Console.WriteLine(new string('*',i));
            }

https://dotnetfiddle.net/NfRI7s

При второто трябва да извадите Console.WriteLine(); извън тялото на вътрешния for, иначе след всяка звездичка слага нов ред.

using System;
                    
public class Program
{
    public static void Main()
    {
           for (int row = 0; row <= 10; row++)
            {
                for (int col = 0; col<row; col++)
                {
                    Console.Write('*');
                }
               Console.WriteLine();
            }

    }
}

https://dotnetfiddle.net/AA9KOM

Поздрави и успех!

 

 

0
kaloyannikov avatar kaloyannikov 531 Точки

Първото решение няма причина да не работи aко не си объркал i с l , ако ти е една променливата няма как да ти дава грешка.

Другия вариант е компилатора да се е бъгнал и да ти показва ,че има грешка , а то да няма. Така че пробвай ctrl + f5 и виж дали ще рънне.

При второто трябва да изкараш console.writeline да е след вътрешния цикъл

          for (int row = 0; row <= 10; row++) 
            {
                for (int col = 0; col<row; col++)
                {
                    Console.Write('*');
                }

                Console.WriteLine();
            }

 

0
mirail_89 avatar mirail_89 3 Точки

Здравейте,

колегата uzunovz е прав. Грешката идва от точката и запетаята след for-цикъла. Без нея ще се получи. 

 

0
Leprikona avatar Leprikona 108 Точки

Има и по-лесен начин: въртиш само един цикъл, в който задаваш i=1 и i<=10 (в случая редовете на елхата).

И накрая един Console.WriteLine(), в който казваш на програмата да ти изпише i на брой звездички на всеки един ред.: 1 "*" на първи, 2 "*" на втори ред и т.н.

0
16/09/2016 08:46:21
gabi.ivanova avatar gabi.ivanova 370 Точки

Относно въпроса ти защо i не съществува, където се опитваш да го използваш - има нещо наречено scope, в който съществува една променлива или област на действие на променливата. В общи линии това е мястото, от където може да бъде достъпена по име. Scope-ът в C# се нества навътре, но и навън.

Нестване навътре: вътре в цикъла достъпваме променлива, която е декларирана извън него

int test = 1;

for(i = 0; i < 10; i++)
{
   test += i;
}

 

Нестване навън: ако гледаме горния пример - променливата i е дефинирана в тялото на цикъла и не може да се достъпо извън него. Тя живее само между  {  }  в които е дефинирана. Тоест ако декларираш други променливи вътре в тялото на цикъла, те ще живеят само там и в общия случай, не могат да се достъпват извън тяхната област на действие.

В твоя случай, както са ти казали колегите имаш ; след декларацията на цикъла, което в C# означава, че той приключва без тяло. Следователно променливите декларирани в него, не могат да се достъпват извън цикъла.

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.