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));
}
}
}
}
Упражнени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)}");
}
}
}
}