Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

XmUrF avatar XmUrF 363 Точки

[Homework] C# Basics - Introduction To Programming - Problem 15-16*

Здравейте!

Питането ми е във връзка с това, че ако се използва Console.WriteLine, тъй като принтването на 1000 реда е твърде много, конзолата поне при мен изкарва числата след ~700. Затова аз лично използвах Console.Write, за да може да се събере цялата поредица на един екран.

Въпросът ми е има ли начин да се направи и с Console.WriteLine и ако да, как?

Тагове:
1
Programming Basics 20/10/2014 19:05:26
Roberto avatar Roberto 56 Точки
Здравей!
Вариянт 1: Десен бутон на конзолота -> Properties -> и от там увеличаваш редовете( не е препоръчително,защото при по-малки програми някой път бави процеса)
Вариянт 2: Console.BufferHeight = 1001; сложи този код и си готов.
6
TodorovH avatar TodorovH 216 Точки

Хм, към отговорите по-горе, че са повече от един, та да не пиша на всеки поотделно!!! 

Питането си е доста основателно според мен и споменатите команди няма да решат проблема с многото отпечатващи се редове! Въпроса тук е не как да се съберат в конзолата, а как да се виждат всичките числа, понеже с отпечатване на всяко на нов ред биха излезли от полето на монитора, освен ако не използвате 50 инчов смарт телевизор! :) Аз също пробвах няколко варианта с различни команти като Console.WriteLine и Console.Write, като поставях запетая и интервал, за да разделя числата и да са по-видими ако може да се каже, но от условието на следващата задача, която явно произтича от обсъжданата, си извадих заключението, че отпечатването на числата, всяко на нов ред е най-удачния вариант, който отговаря на условието!

0
Roberto avatar Roberto 56 Точки
Колега,ето я моята задача и нямам никакъв проблем.

 Console.BufferHeight = 1001;
            for (int i = 2; i < 1001; i++)
            {
                if (i % 2 == 0)
                {
                    Console.WriteLine(i);
                }
                else
                {
                    Console.WriteLine(-i);
                }
            }
5
g.stoyanov avatar g.stoyanov 776 Точки
Въпроса не е как да ги събере на екрана, човека пише че ги изкарва от 700 и нагоре (едва ли събира 300 реда :) неговата конзола - по скоро това е буфера). Но решението на твоя проблем е да се вземе широчината на конзолата да се раздели на 5 или 6 примерно (дължината на предполагаемото най голямо число + запетая и интервал) и получения резултат го записваме в n например. След което в цикъл да почне да се печати с Write и на всеки n на брой отпечатвания да се изплющява един WriteLine(); по този начин може да се използва максималния капацитет на размера на конзолата.
7
TodorovH avatar TodorovH 216 Точки

Колегата няма проблем с буфера!!! Има проблем с виждането на числата, без да използва скрола!!! Ако аз съм ви клиент не знам как ще се разберем, докато ми разберете поръчката някой друг ще ми помогне!!! :)

Пак повтарям: проблема, който обсъждаме е за чистото визуализиране на числата, които очите на седящия пред монитора виждат, хм май това е най-простото обяснение на което съм способен. Дано този път съм бил по-ясен!

Слушайте какво ви говорят хората, а не какви си мислите, че ви говорят!

Редакция: Явно аз не съм скролирал докрай и не съм забелязал, че числата се отпечатват в наличната по подразбиране височина на конзолата, и трябва да се зададе нова височина!!! 

-4
du4ko avatar du4ko 14 Точки
 Относно това как да се показват всичките числа преди 702 нямам решение аз я докарах дотук :) , ще продължа да следя ако някои реши проблема!

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

            {
                Console.WriteLine(i % 2 == 0 ? i : -i);
            }

 edit : Console.BufferHeight = 1001; окей това свърши работа благодаря :)

1
ViValDam avatar ViValDam 15 Точки
махни лайн от конзол райт
2
Lyubo avatar Lyubo 172 Точки
        Console.SetBufferSize(60, 1000); // правим размера на буфера 60x1000 width x height

        for (int i = 0; i < 1000; i++, Console.WriteLine(i % 2 == 0 ? i : -i)) ;

0
wartus avatar wartus 152 Точки
Пускаш задачата и ти се появява конзолата цъкаш горе извън черното и да се появява прозорец с опции
даваш properties-->options-->buffer size
3
GoShow avatar GoShow 595 Точки
using System;

class PrintLongSequence
{
    static void Main()
    {
        for (int i = 2; i < 1002; i++)
        {

            if (i % 2 == 0)
            {
                Console.Write(i + ",");
            }
            else
            {
                if (i == 1001)  //this "if" is for not putting "," after the last number of the sequence
                {
                    Console.WriteLine(-i);
                    break;
                }
                Console.Write(-i + ",");
            }
        }
    }
}

Ето вариант как да бъдат отделяни със запетайка, като дори след последното число не се изписва.
2
divery avatar divery 8 Точки

Добре, ами ако се направи така ?

 

static void Main()

{

        int StartOne = 2;

         while (StartOne <= 1002)
        {
            Console.Write(StartOne + ",");
            StartOne = StartOne + 1;
        }
        Console.WriteLine();

}

0
TodorovH avatar TodorovH 216 Точки
Според условието на задачата, всяко нечетно число трябва да се отпечата с отрицателен знак! В така написания код всички числа са представени като положителни!
3
ViValDam avatar ViValDam 15 Точки

 Защо прибавяш само 1 ? Като прибавиш едно на 2 ,получаваш 3 , а не 4!

2 трябва да прибавяш на положителните числа и -2 на отрицателните.

Ето така:

 StartOne = StartOne + 2; // for possitive numbers 2, 4, 6, 8 .....

 StartTwo =  StartTwo - 2; // for negative numbers -3, -5, -7,.... 

Ето ти цялата програма, по твоя начин : 

int StartOne = 2;
int StartTwo =-3;

while ((StartOne <= 1000 ) && (StartTwo >= - 1001))
{
     Console.Write(StartOne + ",");
     Console.Write(StartTwo + ",");
     StartOne = StartOne + 2;
     StartTwo = StartTwo - 2;
}
















2
dimitarstoyanov90 avatar dimitarstoyanov90 164 Точки

Ето го и мойто решение на задачата:

static void Main(string[] args)
        {
            int i;
            int[] sequenceNumbers = new int[1000];
            for (i = 0; i < 1000; i++)
            {
                sequenceNumbers[i] = i+2;
            
                if (((sequenceNumbers[i] + 2) % 2) == 1)
                {
                    sequenceNumbers[i] = sequenceNumbers[i] - 2 * (sequenceNumbers[i]);
                    
                }
                Console.Write(sequenceNumbers[i] + ",");
            }
            
        }

0
zarkoNGU avatar zarkoNGU 21 Точки

Здравейте.
Можеш да решиш проблема си с командата,която и аз за първи път научавам от Roberto: Console.BufferHeight = 1001;

Относно решението на задачата забелязвам, че всички сте я решили по приблизително един и същ начин, използващи не само for цикъла, но и if,else . Ето и моето решение  използващо само for цикъл:
    

 for (int i = 2 , minus = -3; i < 1002; i+=2 , minus-=2)       

 {      

       Console.WriteLine(i);
       Console.WriteLine(minus);
       Console.BufferHeight = 1001;
  }

3
ViValDam avatar ViValDam 15 Точки
проблема се решава с един единствен цикъл - много задълбавате !
-1
ViValDam avatar ViValDam 15 Точки
има и с while 
0
ViValDam avatar ViValDam 15 Точки
малко шантав вариант е твоя 
-2
XmUrF avatar XmUrF 363 Точки

Мдам с предложенията от тук се получиха нещата. Мерси.

@ zarkoNGU, аз се мъчих да направя нещо такова като теб, ама не ми се получи :). Интересно решение. Иначе успях да го направя с if-else, но тук ми хареса как го е направил примерно du4ko и смятам този вариант да ползвам.

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