Професионална програма
Loading...
PETJAH avatar PETJAH 0 Точки

Half Sum Element - Programming Basics C#

Когато стартирам програмата във Visual Studio всичко е наред, но в Judge всички проверки са грешни и в детайли не ми дава входа и изхода, които очаква, за да разбера къде е проблемът. Моля, за помощ! Благодаря!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp6
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine());
            var big = int.Parse(Console.ReadLine());
            var sum = big;
            for (var i = 2; i <= n; i++)
            {
                var a = int.Parse(Console.ReadLine());
                sum = sum + a;
                if (a > big) big = a;
            }
            if (big == (sum - big))
            {
                Console.WriteLine("Yes");
                Console.WriteLine("Sum  = " + sum);
            }
            else
            {
                Console.WriteLine("No");
                Console.WriteLine("Diff = " + Math.Abs(sum - big));
            }
        }
    }
}
 

Тагове:
0
Programming Basics
kolewmi avatar kolewmi 3 Точки

Упражнениe: Повторения с цикли – for-цикъл

Задачи за упражнение в клас и за домашно към курса "Основи на програмирането" @ СофтУни.

Тествайте решенията си в Judge системата: https://judge.softuni.bg/Contests/Compete/Index/1164

For-Loop - Exercise

2. Елемент, равен на сумата на останалите

Да се напише програма, която чете n-на брой цели числа, въведени от потребителя, и проверява дали сред тях съществува число, което е равно на сумата на всички останали. Ако има такъв елемент, печата "Yes", "Sum = "  + неговата стойност; иначе печата "No", "Diff = " + разликата между най-големия елемент и сумата на останалите (по абсолютна стойност).

=========================================================================

Според мен има грешка в логиката на решението и това ,че ви дава 100 от 100 нищо не означава.

Никъде в условието на задачата не е казано, че това число, което е равно на сумата на останалите трябва непременно да е най-голямото.

Какво ще се получи например, ако n=3, и се въведе вход :

 

Вход

3

5

6

-1

Изходът би трябвало да е:

Yes

Sum = 5 

Очевидно  5=6+ (-1) и е решение на задачата, защото е равно на сумата на всички останали.

При решението, което сте дали изходът ще е:

No

Diff = 2

Според мен правилното решение би изглеждало нещо подобно на това, но задачата става вече от масиви:

using System;

namespace _02._Half_Sum_Element
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];
            int sum = 0;
            Boolean flag = false;
            int max = int.MinValue;
            for (int i = 0; i < n; i++)
            {
                a[i] = int.Parse(Console.ReadLine());
                sum = sum + a[i];
                if (a[i] > max)
                {
                    max = a[i];
                }
            }
                for (int j = 0; j < n; j++)
                {
                    if (sum - a[j] == a[j])
                    {
                        Console.WriteLine("Yes");
                        Console.WriteLine($"Sum = {a[j]}");
                        flag = true;
                    break;
                    }
                }
                if (flag == false)
                {
                    Console.WriteLine("No");
                    Console.WriteLine($"Diff = {Math.Abs(sum - max - max)}");
                }

            }
        }
    }
 

0
19/11/2019 04:00:54