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

Equal sum

Здравейте!

Отново уж всичко е наред, а ми дава 80/100. Ще съм благодарен, ако някой помогне.

https://pastebin.com/y3QErYWc 

Тагове:
0
Module: C# Advanced
kkaraivanov avatar kkaraivanov 486 Точки
Best Answer

Здравей! Като за начало опитай да направиш следното:

1 - във външния цикъл в самото начало направи булевата = false

2 - веднага след нея сложи една проверка за дължината на масива, ако numbers.Length == 1 да изведе на конзолата 0

3 - след 2-та цикъла направи проверка например -

if (sumLeft != sumRight)
{
   flag = true;
}
else if (sumLeft == sumRight)
{
   Console.WriteLine(i);
   break;
}

4 - извън цикъла провери булевата и ако е true отпечатай

Console.WriteLine("no");

5 - премахни следния код

int index = 0;
long middleSum = 0;

middleSum += numbers[i];

if (middleSum == 0)
{
   if (numbers[numbers.Length - 1] == 0)
{
   flag = true;
   index = 0;
}
   else if (numbers[0] == 0)
{
   flag = true;
   index = numbers.Length - 1;
}
}

if (flag == true || numbers.Length == 1)
   Console.WriteLine(index);
else
   Console.WriteLine("no");

също така и проверката за str != string.Empty

След тези промени, би трябвало да ти даде 100/100 и кода да изглежда ето така:

using System;
using System.Linq;

namespace EqualSum
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] arr = str.Split();
            int[] numbers = arr.Select(int.Parse).ToArray();
            bool flag = false;
            for (int i = 0; i < numbers.Length; i++)
            {
                flag = false;
                if (numbers.Length == 1)
                {
                    Console.WriteLine(0);
                    break;
                }

                int sumLeft = 0;
                int sumRight = 0;
                for (int j = 0; j < i; j++)
                {
                    sumLeft += numbers[j];
                }
                for (int j = 1 + i; j < numbers.Length; j++)
                {
                    sumRight += numbers[j];
                }
                if (sumLeft != sumRight)
                {
                    flag = true;
                }
                else if (sumLeft == sumRight)
                {
                    Console.WriteLine(i);
                    break;
                }
            }
            if (flag)
            {
                Console.WriteLine("no");
            }
        }
    }
}

 

0
04/02/2020 14:20:00
alexiev_bg avatar alexiev_bg 3 Точки

Благодаря!

С доста излишен пълнеж съм накичил пробрамата, обаче и тя работеше, смея да твърдя коректно.

 

 

 

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