Equal sum
Здравейте!
Отново уж всичко е наред, а ми дава 80/100. Ще съм благодарен, ако някой помогне.
https://pastebin.com/y3QErYWc
Здравейте!
Отново уж всичко е наред, а ми дава 80/100. Ще съм благодарен, ако някой помогне.
https://pastebin.com/y3QErYWc
Здравей! Като за начало опитай да направиш следното:
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");
}
}
}
}
Благодаря!
С доста излишен пълнеж съм накичил пробрамата, обаче и тя работеше, смея да твърдя коректно.