Професионална програма
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 812 Точки

Взимаш ги като масив от стрингове и ги 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 198 Точки

Здравейте, искам да попитам дали е възможно тази задача да се реши с материала до тук, т.е без масиви, списъци, стрингове, речници, обекти или класове. Или евентуално след известно време отново да се върна на нея. Задачата е поместена в темата "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}");
                }

                }





            }
        }
    }
 

0
nickwork avatar nickwork 662 Точки

Четеш входа като стринг "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 198 Точки

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

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 2 Точки

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

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

https://pastebin.com/Hxqf7BPR

0
doncho9292 avatar doncho9292 0 Точки

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

0
24/03/2021 01:01:18
krum_43 avatar krum_43 535 Точки

Ето едно решение и от мен:

https://pastebin.com/4GhXYiAR

0