Long Sequence for цикъл не желае да изпълни 1000 iterations


0
using System; class Program { static void Main() { for (int i = 2; i < 1001; i++) { Console.WriteLine(((i % 2 == 0) ? i : -(i))); } Console.ReadLine(); } }

Странно поведение на for:

кода по-горе изкарва:

от 702, -703 ...  до 1000

Някои има ли представа, защо прави тези номера?




Отговори



2
Изкарва ти всички, просто буфера на конзолата е малка и да кажем след 700 се затрива старата информация и започва отначало да печата. Ако искаш можеш да си тестваш като сложиш един брояч и го увеличаваш на всяка итерация. Накрая го изпринтирай и виж, че е очакваната бройка.

от kolchakov96 (237 точки)


1

Мда, правилна си ти е, обаче не знам що си сложил Console.ReadLine(); метода, след като няма нужда от него(той е за четене на интове, стрингове... от конзолата).Иначе с брояча виж това :

using System;
class LongSequence
    {
        public static void Main()  
        {   
            int counter = 0;
            for (int i = 2; i < 1001; i++)
            {  
                Console.WriteLine(((i % 2 == 0) ? i : -(i)));
                counter++;
            }
            Console.WriteLine("They are {0} numbers printed on the console.", counter);
        }
    }


от desislavaaaa (1190 точки)


0
Или промени i<1002 или добави равно (i <= 1001). 

от milislavski (886 точки)


0

Заповядай: 

using System; namespace LongSequence { class LongSequence { static void Main() { for (int i = 2; i <= 1001; i++) { if (i % 2 == 0) { Console.WriteLine(i); } else { Console.WriteLine("-" + i); } } } } }




0
Благодаря момчета :)

от sechko (25 точки)

0
Не ти е нужно CW("-"+i), можеш да напишеш направо Console.WriteLine(-i) :)

от Stefy (94 точки)


1

Здравейте на всички. Преглеждайки темите свързани с тази задачка забелязах, че за изпринтването на число главно бива използван броячът на for цикъла, пък да си призная на мен това определено не ми беше от първите мисли, когато пишех кода.. nvm, искам да споделя ии моя вариант за решение тъй като е малко по-различен, използвайки променлива и операторът за увеличаване с единица. :)

using System;

    class LongSequence
    {
        static void Main()
        {
            int number = 2;

            for (int i = 0; i < 1000; i++)
            {
                if (number % 2 == 0)
                {
                    Console.WriteLine(number);
                }
                else
                {
                    Console.WriteLine(-number);
                }
                number++;
            }
        }
}


от Nataliqqq (20 точки)


0
Не си сама! Това беше и моето решение. :)


0
Променливата number ти е напълно излишна, тъй като в цикъла така или иначе имаш брояч. С тази логика би било по подходящо да използваш while цикъл.

от rossi.bundeva (1059 точки)