Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Nikodon avatar Nikodon 3 Точки

Методи - Top Number.

Привет, мъча се със задача 10 от упражненията за Методи - Top Number.

Това е решението ми, но явно не ми се получава, може ли малко помощ по кода :

 

https://pastebin.com/YrwkehGa

 

Благодаря!

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

Ето моето решение, мисля че по-бързо ще откриеш проблема покода си

using System;

namespace TopNumber
{
    class Program
    {
        static void Main(string[] args)
        {
            long num = long.Parse(Console.ReadLine());

            for (long i = 1; i <= num; i++)
                GetSum(i);
                    
        }

        private static void GetSum(long l)
        {
            long sum = 0;
            long printNum = l;
            bool setOddNumber = false;

            while (l > 0)
            {
                if (l == 0)
                    break;
                long temp = l % 10;
                sum += temp;
                if (!(temp % 2 == 0))
                    setOddNumber = true;
                l /= 10;
            }

            if (sum % 8 == 0 && setOddNumber)
            {
                Console.WriteLine(printNum);
            }
        }
    }
}

Неуспявам да схвана логиката ти. В мейн получаваш число от конзолата, правиш масив с тази големина и подаваш празен масив на булев метод. Масива има само null, реално в тялото на метода ти нищо не се случва.

0
12/02/2020 23:45:18
Nikodon avatar Nikodon 3 Точки

Да, аз искам да си обясня защо е празен, идеята ми е да взема всяка цифра от рейнджа. Като дебъгна виждам, че е нула, но не разбирам защо е? Искам да взема всяка цифра от рейнджа на масива да я проверя дали е нечетна и да видя дали сумата се дели на 8. Защо не се получава. Просто не разбирам така изписан кода , какво трябва да променя за да работи.

0
kkaraivanov avatar kkaraivanov 486 Точки

Редактирах кода ти, така че да запълниш масива и да го предадеш на метода за обработка, след което метода ще ти върне стойност която да изпишеш на конзолата. Оставям на теб да развиеш логиката си за обработка на масива в метода.

using System;
using System.Linq;

namespace Extra
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            int[] arr = input.Select(c => int.Parse(c.ToString())).ToArray();
            int result = isTopNumber(arr);
            Console.WriteLine(result);

        }

        static int isTopNumber(int[] arr)
        {
            int sum = 0;
            bool isDivisible = false;
            bool isDigitOdd = false;

            for (int i = 1; i <= arr.Length; i++)
            {
                int currenDigit = arr[i] % 10;
                sum += currenDigit;
                arr[i] = arr[i] / 10;

                if (sum % 8 == 0)
                {
                    isDivisible = true;
                }

                if (currenDigit % 2 != 0)
                {
                    isDigitOdd = true;
                }
            }

            return sum;
        }
    }
}

 

0
Nikodon avatar Nikodon 3 Точки

Благодаря ти! Дебъгвах няколко пъти и сега ми стана ясна концепцията. Загубих време, но ми стана ясно.

1
krum_43 avatar krum_43 750 Точки

Дай линк към условието.

0
Nikodon avatar Nikodon 3 Точки

Брагодаря колега, успях да се оправя.

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