Loading...
onefen avatar onefen 27 Точки

Homework Introduction to Programming Problem 16

Здравейте имам проблем с последната задача 16 - дълата редица от числа където се искаха първите 1000 члена на редицата: Използвам следния код:

using System;

class PrintLongSequence
{
    static void Main ()
    {
        for (int i = 2, j = -3; i<= 1000; i = i + 2, j = j - 2)
        {
            Console.WriteLine(i);
            Console.WriteLine(j);
        }
    }
}

Когато го стартирам редицата започва от -703 и 704. Това са първите цифри които ми изписва. Позлвам същия код и в задача 9 (същата редица но само пъривте 10 цифри (i <= 10)) и там кода работи перфектно. Като си пусна с дебугера програмата виждам, че променливите се смятат правилно 2 -3 -4 -5 и тн., но защо не ми изкарава цялата редица на конзолата?

Тагове:
0
Programming Basics
Alezard avatar Alezard 7 Точки

Само да вмъкна, за да бъдат отпечатани първите 1000 числа, горната граница трябва да е <= 1001, щом се тръгва от 2. Ако са до 1000, се получават 999 числа и условието не е спазено.

Поздрави.

2
DHristoskov avatar DHristoskov 211 Точки

Ами не си прав защото при i<=1000 значи че цикъла ще върти до 1000 включително от 2....=1000 ,ако напишеш 1001 цикъла ще се върти до 1001,ако в задачата беше написано i<1000,тогава цикъла ще се върти до 999 и наистина трябва да бъде поставено i<1001.

Не ме бива много в обясненията дано съм успял да се изразя добре ,за да ме разбереш.

П.С.Но ако имаш в предвид решението на alerionx  си абсолютно прав и се извинявам за кометара ми.Тъй като отговора ти не е насочен като кометар към решението на alerionx,излгежда че коментираш основната тема.

0
26/02/2015 11:05:50
Alezard avatar Alezard 7 Точки

Коментара беше към всички. Водя се по условието, което е първите 1000 члена на редицата от 2 нататък, а не да изкара редицата до 1000.  Ако сложиш един брояч в дъното на for цикъла си и го принтираш ще видиш, че в този си вид, кода ти ще изкара 999 члена. На моя код сложих, за да не стават обърквания и ниски точки на домашното ;д Може да се направи или i < 1002, или i <= 1001. И двете дават един и същи резултат.

Пояснение за не знаещите как се прави брояч:

int count = 0;

for(...)

{

    //Some code here.

    count++;

}

Console.WriteLine("Count = " + count);

Това ще изкара директно колко броя пъти for цикъла е правил завъртания. Пробвайте, ако не вярвате.

2
DHristoskov avatar DHristoskov 211 Точки

 

Write a program that prints the first 1000 members of the sequence: 2, -3, 4, -5, 6, -7, … You might need to learn how to use loops in C# (search in Internet).

 

Ако ползваш този вариант не ти е нужен caunter няма защо да броиш завъртанията на цикъла,защото със задаването на  for ти казваш точно колко пъти той да се завърти а имено от 2......<=1000 (до 1000 включително имаш знак равно),a counter ти се явява ++i където то се увеличава с едно на всяко завъртане на цикъла ,докъто стане равно на 1000.И така няма да печаташ до 999, а до 1000.

for (int i = 2; i <= 1000; ++i)

  {
                if (i % 2 == 0)
                {
                    Console.Write(i + "; ");
                }
                else
                {
                    Console.Write(-i+"; " );

}

Можеш да проваш този вариант и ще се обедиш че работи.

Отговорът ще бъде:2; -3; 4; -5; 6; -7;.........1000(включително)

0
ZlatinDimitrov avatar ZlatinDimitrov 11 Точки

Абсолютно си прав,колега!Много лесна за допускане грешка.Преди малко го коригирах.трябва да бъде до 1001.

1
26/02/2015 12:25:10
Alezard avatar Alezard 7 Точки

Задачата не е да се принтират числата до 1000, а първите 1000 члена. Броят им е важен. Ако се тръгваше от 1, тогава може i <= 1000 или i < 1001, членовете на редицата ще са 1000 на брой. Брояча е за уверение, че редицата се състои от точно 1000 члена.

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