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 и тн., но защо не ми изкарава цялата редица на конзолата?
Ами не си прав защото при i<=1000 значи че цикъла ще върти до 1000 включително от 2....=1000 ,ако напишеш 1001 цикъла ще се върти до 1001,ако в задачата беше написано i<1000,тогава цикъла ще се върти до 999 и наистина трябва да бъде поставено i<1001.
Не ме бива много в обясненията дано съм успял да се изразя добре ,за да ме разбереш.
П.С.Но ако имаш в предвид решението на alerionx си абсолютно прав и се извинявам за кометара ми.Тъй като отговора ти не е насочен като кометар към решението на alerionx,излгежда че коментираш основната тема.
Коментара беше към всички. Водя се по условието, което е първите 1000 члена на редицата от 2 нататък, а не да изкара редицата до 1000. Ако сложиш един брояч в дъното на for цикъла си и го принтираш ще видиш, че в този си вид, кода ти ще изкара 999 члена. На моя код сложих, за да не стават обърквания и ниски точки на домашното ;д Може да се направи или i < 1002, или i <= 1001. И двете дават един и същи резултат.
Пояснение за не знаещите как се прави брояч:
int count = 0;
for(...)
{
//Some code here.
count++;
}
Console.WriteLine("Count = " + count);
Това ще изкара директно колко броя пъти for цикъла е правил завъртания. Пробвайте, ако не вярвате.
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(включително)
Абсолютно си прав,колега!Много лесна за допускане грешка.Преди малко го коригирах.трябва да бъде до 1001.
Задачата не е да се принтират числата до 1000, а първите 1000 члена. Броят им е важен. Ако се тръгваше от 1, тогава може i <= 1000 или i < 1001, членовете на редицата ще са 1000 на брой. Брояча е за уверение, че редицата се състои от точно 1000 члена.