Loading...
rostislav_kolev avatar rostislav_kolev 3 Точки

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

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

          {
            var n = int.Parse(Console.ReadLine());
            var max = int.Parse(Console.ReadLine());
            var sum = 0;
            var num = 0;
            for (int i = 1; i < n; i++)
            {
                num = int.Parse(Console.ReadLine());
                if (num > max)
                { max = num;}
                sum += num - max*2;
            }
            if (sum == max)
                Console.WriteLine("Yes sum = " + sum);
            else
                Console.WriteLine("No Diff = " + Math.Abs(sum-max))
        }

Колеги, помъчих се здраво над тази привидно лесна задача, но не ми се получава. Ще се радвам, ако някой ми удари едно рамо ;)

Тагове:
0
Programming Basics
petar.dimitrov.86 avatar petar.dimitrov.86 450 Точки
Best Answer

eто кода с корекции тук : http://pastebin.com/Czjhk0ft . А сега пояснения за грешките в твоя код. Според това което си написал, като си изкарал числото max веднага да се пише след n,  така не включваш това число към сумата. Оправих и цикъла да е с една стъпка повече, и освен това сумата ти вътре във for цикъла трябва да се натрупва до края на цикъла, и чак след края на цикъла да се правят сравнение и обработки с него. Надявам се разясненията да са ясни.

1
MiroStoykov avatar MiroStoykov 0 Точки

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication3
    {
    class Program
        {
        static void Main(string[] args)
            {
            var input = Convert.ToInt32(Console.ReadLine());
            var bigest = 0;
            var sum = 0;
            for (int i = 1; i <=input; i++)
                {
                var number = Convert.ToInt32(Console.ReadLine());
                sum = sum+number;
                if (bigest<number)
                    {
                    bigest = number;
                    }
                }
            if (sum==bigest*2)
                {
                Console.WriteLine("Yes");
                Console.WriteLine("Sum = "+bigest);
                }
            else
                {
                Console.WriteLine("No");
                Console.WriteLine("Diff = "+Math.Abs((sum-bigest)-bigest));
                }
            }
        }
    }
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.