Loading...

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

nikolaykk avatar nikolaykk 94 Точки

Homework: Primitive Data Types and Variables-Problem 16-Half Sum

Здравете,

В задачата е записано,че n е цяло число [0...500], а всички други числа, които въвеждаме са в диапазона [-500 000 ... 500 000].

Въпроса ми е при подобна задача на изпита трябва ли да включим код, който да проверява  входните данни или е важен просто алгоритъма?

Ето моето решение за момента:

using System;

    class HalfSum
    {
        static void Main()
        {
            Console.Write("Enter number of the sequence [0...500] n:");
            ushort n = ushort.Parse(Console.ReadLine());
            Console.WriteLine("Enter elements of the sequence, value [-500 000 ... 500 000]:");
            int[] sec1 = new int[n];
            int[] sec2 = new int[n];
            int sum1 = 0;
            int sum2 = 0;
            for (int i = 0; i < n; i++)
            {
                sec1[i] = int.Parse(Console.ReadLine());
                sum1 += sec1[i];
            }
            for (int i = 0; i < n; i++)
            {
                sec2[i] = int.Parse(Console.ReadLine());
                sum2 += sec2[i];
            }
            if(sum1==sum2)
            {
                Console.WriteLine("Yes,sum= {0}",sum1);
            }
            else
            {
                Console.WriteLine("No,diff= {0}", Math.Abs(sum1 - sum2));
            }
        }
    }

Ще се радвам на коментари.

Тагове:
0
Programming Basics
DHristoskov avatar DHristoskov 211 Точки

В условието на изпитните задачи винаги е описано какво да очакваш като Input и какво се очаква от теб за Output след като е написано, че входа ще бъде коректен и няма нужда да проверяваш, значи няма нужда smiley, ако липсва това описание е друг въпрос.Но в изпитните задачи винаги е описано. Защото ако трябва да прехващаш всички изключения ще трябва да проверяваш за страшно много неща на входа.

П.С: Разбира се има и уловки, за които трябва да се досетиш, но поне от моя скромен опит нещата не стигат до там да правиш конструкции try catch или някакви многобройни проверки, а просто да съобразиш.

И ако пуснеш това през Judge ще ти даде 0 точки, защото следващите два реда не трябва да присъстват, просто махни коментарите, Judge не очаква коментари на входа.

Console.Write("Enter number of the sequence [0...500] n:");

Console.WriteLine("Enter elements of the sequence, value [-500 000 ... 500 000]:");

0
25/05/2015 11:42:51
nikolaykk avatar nikolaykk 94 Точки

Благодаря за коментара.

Информацията за Judge системата определено би променила резулта от изпита :)

0
DHristoskov avatar DHristoskov 211 Точки

Като цяло трябва да си много внимателен, когато пускаш задачата през Judge, защото една точка един интервал в повече или по - малко и веднага получаваш 0 точки, трябва да бъде 1:1 с очаквания изход, а за входа никакви коментари  просто вход за данните.

0
peterborisov avatar peterborisov 123 Точки

 int n = int.Parse(Console.ReadLine());
            int sum1 = 0;
            int sum2 = 0;

            for (int i = 0; i < n; i++)
            {
                int num1 = int.Parse(Console.ReadLine());
                sum1 += num1;
            }
            for (int i = 0; i < n; i++)
            {
                int num2 = int.Parse(Console.ReadLine());
                sum2 += num2;
            }
            if(sum1==sum2)
            {
                Console.WriteLine("Yes, sum={0}",sum1);
            }
            else
            {
                Console.WriteLine("No, diff={0}",Math.Abs(sum1-sum2));
            }

0
dgp_82 avatar dgp_82 19 Точки

Реших задачата по подобен начин, но в judge ми дава 0 точки. Ето го и кода, ще се радвам някой, ако ми покаже къде бъркам.

using System;

    class HalfSumContinue
    {
        static void Main()
        {
            int n = int.Parse(Console.ReadLine());
            int sumFirst = 0;
            for (int i = 0; i < n; i++)
            {
                int count = int.Parse(Console.ReadLine());
                sumFirst += count;
            }
            int sumSecond = 0;
            for (int i = 0; i < n; i++)
            {
                int countSecond = int.Parse(Console.ReadLine());
                sumSecond += countSecond;
            }
            if (sumFirst == sumSecond)
            {
                Console.WriteLine("Yes,sum={0}", sumFirst);
            }
            else
            {
                int absValue = Math.Abs(sumFirst - sumSecond);
                Console.WriteLine("No,diff={0}",absValue);
            }
        }
    }

0
peterborisov avatar peterborisov 123 Точки

Просто на тези редове трябва да сложиш празно място между "Yes, sum и No, diff и  ти дава 100 точки

така както съм ги преправил:


                Console.WriteLine("Yes, sum={0}", sumFirst);
                  
                Console.WriteLine("No, diff={0}",absValue);
            

1
31/05/2015 06:57:40
dgp_82 avatar dgp_82 19 Точки

Работи. Даде 100/100. Благодаря!

 

0
nikolaiweselinow avatar nikolaiweselinow 11 Точки

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

        int n = int.Parse(Console.ReadLine());
        int[] arr1 = new int[n];
        int[] arr2 = new int[n];
        for (int i = 0; i < arr1.Length; i++)
        {
            arr1[i] = int.Parse(Console.ReadLine());
        }
        for (int i = 0; i < arr2.Length; i++)
        {
            arr2[i] = int.Parse(Console.ReadLine());
        }
        if (arr1.Sum() == arr2.Sum())   Console.WriteLine("Yes, sum={0}", arr1.Sum());       
        else Console.WriteLine("No, diff={0}", Math.Abs(arr1.Sum() - arr2.Sum()));    

0
nikolaykk avatar nikolaykk 94 Точки

Сумирането на членовете на масива с arr1.Sum() e хубаво решение, не се бях сетил.

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