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

Проблем при задача в judge "Tripple Sum"

int[] arr = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

            var res = false;
            for (int i = 0; i < arr.Length; i++)
            {
                for (int j = i + 1; j < arr.Length; j++)
                {
                    int a = arr[i];
                    int b = arr[j];
                    int sum = a + b;
                    if (arr.Contains(sum))
                    {
                        Console.WriteLine("{0} + {1} == {2}", a, b, sum);
                        res = true;
                    }
                }
                if (res == false)
                    Console.WriteLine("No");
            }

така ми дава грешка когато няма отговори.

като закоментирам  if (res == false)
                                   Console.WriteLine("No");

пак ми дава грешка

Тагове:
0
Общи приказки 22/03/2016 10:23:13
krokicha avatar krokicha 76 Точки

if (res == false)
  Console.WriteLine("No");

трябва да е извън циклите.

1
krokicha avatar krokicha 76 Точки

Това е защото първо трябва да се проверят всички възможни комбинации от числа и ако няма нито една тройка отговаряща на условието a + b = c, тогава да се отпечата "No". Проверих в Judge-а - дава 100 точки като изнесеш проверката извън циклите.

1
g.stoyanov avatar g.stoyanov 776 Точки

if (res == false) не е много четимо и не се препоръчва от гледна страна на качествения код.

if(!res) ето така се прави.

А да сме по точни името на променливата трябва да е нещо от сорта на: if(!haveSum).

 

Просто давам препоръка ;)

2
i.minchev.qa avatar i.minchev.qa 34 Точки

Опитвам се да реша задачата по алтернативен начин без Contains.

Съгласно резултатите в Slide 18 of 44 от презентацията всичко е "ток и жица" - TEST OK!!!

Според Judge обаче, съм прав наполовина и малко отгоре - резултат 60/100

Кодът е:

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

namespace TrippleSumForLoop_10._05._2016
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            bool isSumEqual = false;
            int sum = 0;

            for (int left = 0; left < nums.Length; left++)
            {
                for (int right = left + 1; right < nums.Length; right++)
                {
                    sum = nums[left] + nums[right];

                    for (int i = 0; i < nums.Length; i++)
                    {

                        if (sum == nums[i])
                        {
                            isSumEqual = true;
                            Console.WriteLine("{0} + {1} == {2}", nums[left], nums[right], sum);
                        }                        
                    }
                }
            }
            if (!(isSumEqual))
            {
                Console.WriteLine("No");
            }           
        }
    }
}

Къде бъркам ?

Благодаря Ви предварително.

 

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