Loading...
Ivan.N.Iliev avatar Ivan.N.Iliev 44 Точки

Можеш да използваш този вариант:

string input = Console.ReadLine();
long[] numbers = input.Split().Select(long.Parse).ToArray();

или този, който е без масиви и LINQ

string numbers = Console.ReadLine();

            string firstNumAsString = string.Empty;
            string secondNumAsString = string.Empty;
            bool isFirstNum = true;
            for (int i = 0; i < numbers.Length; i++)
            {
                if (isFirstNum && numbers[i] != ' ')
                {
                    firstNumAsString += numbers[i];
                }
                else if (!isFirstNum && numbers[i] != ' ')
                {
                    secondNumAsString += numbers[i];
                }
                else if (numbers[i] == ' ')
                {
                    isFirstNum = false;
                }
            }

            int firstNumber = int.Parse(firstNumAsString);
            int secondNumber = int.Parse(secondNumAsString);

0
VasilKotsev avatar VasilKotsev 830 Точки

Взимаш ги като масив от стрингове и ги parse-ваш.

using System.Linq;

int[] numbers = Console.ReadLine()
               .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
               .Select(x => int.Parse(x))
               .ToArray();

 

0
Golbarg200 avatar Golbarg200 3 Точки

Благодаря!

1
Ivaylo.apostolov avatar Ivaylo.apostolov 12 Точки

Здравейте

За същата задача моля за помощ.

От примерите в doc - а всички ми дават верни отговори, но Съдията ми пише  25/100.

https://pastebin.com/bSVzP29x

Предварително благодаря за помоща!

0
NataliyaZhekova avatar NataliyaZhekova 0 Точки

Ако стринга съдържа отрицателно число -2222 -1111 , няма да влезе в този код  while (firstNumber > 0). В темата се разисква да се ползва Math.Abs(). Въпреки това аз съм го докарала до 50/100 . Ще ми е любопитно да разбера решение със 100 /100.

0
plus1pxl avatar plus1pxl 16 Точки

Можеш да четеш string и да вземеш substring преди и след " "

                string input = Console.ReadLine();
                string stringBeforeSpace = input.Substring(0, input.IndexOf(" "));
                string stringAfterSpace = input.Substring(input.IndexOf(" ") +1);

след това парсваш левия и десния substring

                long numLeft = long.Parse(stringBeforeSpace);
                long numRight = long.Parse(stringAfterSpace);

 

И не забравяй вътре в проверките си, да обърнеш числата Left и Right към положителни с Math.Abs(), или рискуваш да не вземеш максимален брой точки в Judge.

1
31/01/2019 19:45:05
MVassileva avatar MVassileva 2 Точки

Не трябва ли само получените суми на числата да се отпечатат по абсолютни стойности?

0
plus1pxl avatar plus1pxl 16 Точки

Няма да има разлика в крайния резултата при двата подхода.

0
MVassileva avatar MVassileva 2 Точки

При сравнение на 2000 и -3000 по-голямото число е 2000.

При сравнение по абсолютни стойности ще даде, че 3000 (бившето -3000) е по-голямото число.

Така че няма как да е едно и също дали проверяваш по абсолютни стойности или по реалните стойности на числата.

0
Elena123456 avatar Elena123456 235 Точки

Здравейте, искам да попитам дали е възможно тази задача да се реши с материала до тук, т.е без масиви, списъци, стрингове, речници, обекти или класове. Или евентуално след известно време отново да се върна на нея. Задачата е поместена в темата "Data types and variables", т.е почти веднага след бейсик нивото .

Ето общата ми логика, но нищо- дава, че входните данни не са в правилния формат.

using System;

namespace TrainingWithData2
{
    class MainClass
    {
        public static void Main()
        {

            int lineNumbers = int.Parse(Console.ReadLine());

            for (int i = 0; i < lineNumbers; i++)
            {
                int num1 = int.Parse(Console.ReadLine()); // осъзнавам, че така няма как да стане четенето на две числа на един ред, но друг начин не сме учили.

                int num2 = Console.ReadLine();


                int digit1 = 0;
                int sum1 = 0;
                while (num1 > 0)
                {
                    digit1 = num1 % 10;
                    num1 = num1 / 10;
                    sum1 = sum1 + digit1;

                }

                int digit2 = 0;
                int sum2 = 0;
                while (num2 > 0)
                {
                    digit2 = num2 % 10;
                    num2 = num2 / 10;
                    sum2 = sum2 + digit2;

                }

                if (sum1 > sum2)
                {
                    Console.WriteLine($"{sum1}");
                }

                else if (sum2 > sum1)
                {
                    Console.WriteLine($"{sum2}");
                }
                else
                {
                    Console.WriteLine($"{sum1}");
                }

                }





            }
        }
    }
 

1
nickwork avatar nickwork 657 Точки

Четеш входа като стринг "10 20", итерираш през този стринг и на всяка итерация записваш резултата в една променлива и гледаш дали си стигнала до чарът празен спейс...ако да започваш да пълниш резултата в друга променлива, накрая парсваш двете променливи към две числови променливи и ги обработваш както си искаш.

using System;

namespace TrainingWithData2
{
    class MainClass
    {
        public static void Main()
        {

            int lineNumbers = int.Parse(Console.ReadLine());

            for (int i = 0; i < lineNumbers; i++)
            {
                string numbers = Console.ReadLine(); // осъзнавам, че така няма как да стане четенето на две числа на един ред, но друг начин не сме учили.

                string fistNumberAssString = string.Empty;
                string secondNumberAssString = string.Empty;

                bool isFirstNumberFound = false;

                for (int j = 0; j < numbers.Length; j++)
                {
                    char currentDigit = numbers[j];

                    if (isFirstNumberFound == false)
                    {
                        if (currentDigit == ' ')
                        {
                            isFirstNumberFound = true;
                        }
                        else
                        {
                            fistNumberAssString += numbers[j];
                        }
                    }
                    else
                    {
                        secondNumberAssString += currentDigit;
                    }
                }

                int num1 = int.Parse(fistNumberAssString);
                int num2 = int.Parse(secondNumberAssString);

                int digit1 = 0;
                int sum1 = 0;
                while (num1 > 0)
                {
                    digit1 = num1 % 10;
                    num1 = num1 / 10;
                    sum1 = sum1 + digit1;

                }

                int digit2 = 0;
                int sum2 = 0;
                while (num2 > 0)
                {
                    digit2 = num2 % 10;
                    num2 = num2 / 10;
                    sum2 = sum2 + digit2;
                }

                if (sum1 > sum2)
                {
                    Console.WriteLine($"{sum1}");
                }

                else if (sum2 > sum1)
                {
                    Console.WriteLine($"{sum2}");
                }
                else
                {
                    Console.WriteLine($"{sum1}");
                }
            }
        }
    }
}

1
15/06/2020 15:08:37
Elena123456 avatar Elena123456 235 Точки

Благодаря за разясненията! :)

0
rikishi58 avatar rikishi58 -1 Точки

play store app for pc apps which are developed by the developers will be available in the Google Play Store Download for PC. You can get access to a lot of apps for free. Play Store for PC also has a collection of paid applications.

-1
AntonDelev avatar AntonDelev 1 Точки

Колеги, моля някой да ми каже какво греша. Правя уговорката и аз, че решавам задачата със знанията от материала взет до тук.

Нулевите тестове са ок, но Judge ми дава на три от тестовете "Runtime error". Опитах със всички възможни варианти, int, long и т.н. но резултата е един и същ. Интересното е, че разрешеното време е 0.100ms и паметта е 16.00 MB. на мен всички тестове са ми под тези граници!?! Ето и решението:

https://pastebin.com/Hxqf7BPR

0
doncho9292 avatar doncho9292 2 Точки

Ето едно решение 100/100 и от мене, сравнително кратко е, отне ми към 6 часа, енджой :D - https://pastebin.com/YtLw6ZmU

0
24/03/2021 01:01:18
aboqnskiq1 avatar aboqnskiq1 1 Точки

 

https://www.pastebin.com/CCLVRvsU

100/100

0
18/04/2021 14:33:06
vvsvvs avatar vvsvvs 4 Точки

Ето и моето решение с помоща на StringBuilder (не е задължително с този клас - може и със string) и без преобразуване в числа (освен при търсенето на по-голямото от двете числа). Съдията ми даде 100/100 https://pastebin.com/CpE2rtkX

0
engenginy avatar engenginy 4 Точки

Ето едно решение 100/100, което е доста кратко и ясно - https://paste2.org/mZ4ZODK1.

using System;

namespace _02.FromLeftToTheRight
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            

            for (int i = 0; i < n; i++)
            {
                string[] input = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
                long left = long.Parse(input[0]);
                long right = long.Parse(input[1]);
                long sum = 0;


                if (left > right)
                {
                    left = Math.Abs(left);
                    while (left > 0)
                    {
                        sum += left % 10;
                        left /= 10;
                    }                    
                }
                else
                {
                    right = Math.Abs(right);
                    while (right > 0)
                    {
                        sum += right % 10;
                        right /= 10;
                    }
                }
                Console.WriteLine(sum);
            }            
        }
    }
}

0
nikoleta.panayotova avatar nikoleta.panayotova 2 Точки

Интересни и полезни решения и макар, че темата е стара, ще се включа с моите примери. Основно съм разделила условието на 2 възможности: Едната е двете числа да са цели, втората, която е по-трудна, дава възможност за плаваща запетая. Когато се събират цифрите на число тип double, това става чрез конвертиране в стринг. Още в началото съм закоментирала по няколко различни начина входът от конзолата input да се разцепи на 2 отделни числа чрез разделител. Всички закоментирани начини работят и точките са 100/100.
...
Първи начин за целочислен тип:

int lines = int.Parse(Console.ReadLine());
long sumDigits = 0;

while (lines > 0)
{
    string[] input = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);

    long firstN = long.Parse(input[0]);
    long secondN = long.Parse(input[1]);

    //string firstNumber = input[0];
    //string secondNumber = input[1];

    //long.TryParse(firstNumber, out long firstN);
    //long.TryParse(secondNumber, out long secondN);

    if (firstN > secondN)
    {
        firstN = Math.Abs(firstN);
        while (firstN > 0)
        {
            sumDigits += firstN % 10;
            firstN /= 10;
        }
    }
    else
    {
        secondN = Math.Abs(secondN);

        while (secondN > 0)
        {
            sumDigits += secondN % 10;
            secondN /= 10;
        }
    }

    Console.WriteLine(sumDigits);

    sumDigits = 0;

    lines--;
}
...
Втори начин за числа с плаваща запетая:

 

int lines = int.Parse(Console.ReadLine());
double sumDigits = 0;

while  (lines > 0)
{
    string input = Console.ReadLine();

    //several other disolvings:

    //string[] input = Console.ReadLine().Split(" ", StringSplitOptions.RemoveEmptyEntries);
    
    //char[] separator = {' '};
    //string[] numbers = input.Split(separator);

    //string firstNumber = string.Split(input[0], ' ');

    string[] numbers = input.Split(' ');
    string firstNumber = numbers[0];
    string secondNumber = numbers[1];

    double.TryParse(firstNumber, out double firstN);
    double.TryParse(secondNumber, out double secondN);

    if(firstN > secondN)
    {
            string firstNumer = firstN.ToString();

            for (int i = 0; i < firstNumber.Length; i++)
            {
                int.TryParse(Convert.ToString(firstNumber[i]), out int digit);
                sumDigits += digit;
            }
    }
    else
    {
        string secondNumer = secondN.ToString();

        for (int i = 0; i < secondNumber.Length; i++)
        {
            int.TryParse(Convert.ToString(secondNumber[i]), out int digit);
            sumDigits += digit;
        }
    }

    Console.WriteLine(sumDigits);

    sumDigits = 0;
    
    lines--;
}

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