Loading...
VladimirMikov avatar VladimirMikov 28 Точки

Проблем със задача C#

Здравейте, имам проблем с решението на въпросната задача 1.Най-голям общ делител. В judge ми дава 90/100 и не мога да разбера защо. Логиката си намирам за правилна , въпреки, че не използвам алгоритъма на Евклид. Благодаря!

Прилагам .линк към задачата 

https://softuni.bg/trainings/resources/officedocument/36151/exercise-problem-descriptions-programming-basics-with-csharp-november-2018/2179

Линк към judge:

https://judge.softuni.bg/Contests/Compete/Index/1163#0

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

namespace _01.Greatest_Common_Divisor__CGD_
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
            int obshtDel = 0;
            int delitel = 1;

            if (a==0)
            {
                Console.WriteLine(b);
            }
            if (b==0)
            {
                Console.WriteLine(a);
            }
            if (a!=0 && b!=0)
            {
                while (delitel <= a)
                {
                    if (a % delitel == 0 && b % delitel == 0)
                    {
                        obshtDel = delitel;
                    }
                    delitel++;
                }
                Console.WriteLine(obshtDel);
            }     

        }
    }
}


 

Тагове:
0
Programming Basics
yvette avatar yvette 4 Точки

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

namespace GreatestCommonDivisor
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
            int result = 0;
            if (b==0)
            {
                result = a;
            }
            else
            {
                while (b!=0)
                {
                    result = b;
                    b = a % b;
                    a = result;
                }
            }
            Console.WriteLine(result);
        }
    }
}
 

0
The_assassin avatar The_assassin 158 Точки

Според тебе, тази излишна проверка с какво би била полезна?

0
krum_43 avatar krum_43 759 Точки

Проверката за if(b==0) e необходима,понеже иначе при вход н.р. 100 и 0 ще ни изведе 0,защото няма да влезнем в цикъла,а resulta e сетнат=0.

0
The_assassin avatar The_assassin 158 Точки

...а resulta e сетнат=0

Аз имах предвид спрямо моя код, където това е избегнато. Защото това е същото като в моя код, плюс една допълнителна проверка, която така или иначе си я има. Не, че няма да даде верен резултат, но мислите ли, че с оглед оптимизиране на изпълнението, повторението на една и съща проверка е удачно?

0
yvette avatar yvette 4 Точки

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

0
The_assassin avatar The_assassin 158 Точки

Забавна си ;-Р
Не е необходимо да ме разбираш мене, надявам се да разбереш това, което kolioi много добре е обяснил, за което аз лично му благодаря!

0
yvette avatar yvette 4 Точки

:D него го разбрах. btw на мен това решение ми даде 100/100. Тепърва имам мнооого да уча, исках да помогна колкото аз си мога, ха ха, вие пък помагате на мен :) :D

и в този ред на мисли... аз ако мога да питам, хаха. Става дума за Cookie factory.. е тук вече всичко ми се случва доста бавно и ми дава 10/100 :D

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

namespace CookieFactory
{
    class Program
    {
        static void Main(string[] args)
        {
            int numberOfBatches = int.Parse(Console.ReadLine());
            bool flour = false;
            bool sugar = false;
            bool eggs = false;
            for (int i = 1; i <= numberOfBatches; i++)
            {
                while(true)

                {
                    string command = Console.ReadLine();
                    if (command == "Bake!")
                    {
                        if (flour == true && eggs == true && sugar == true)
                        {
                            Console.WriteLine($"Baking batch number {i}...");
                            flour = false; eggs = false; sugar = false;
                            break;
                        }
                        else
                        {
                            Console.WriteLine("The batter should contain flour, eggs and sugar!");
                            continue;
                        }
                        switch (command)
                        {
                            case "flour": flour = true; break;
                            case "eggs": eggs = true; break;
                            case "sugar": sugar = true; break;
                        }
                    }

                }
            }
        }
    }
}
 

 

 

 

0
23/11/2018 19:42:19
kolioi avatar kolioi 641 Точки

Bake! също е команда, така че я сложи при другите команди и ще стане. След това помисли как да го направиш само с един цикъл - for или while, по твой избор.

0
The_assassin avatar The_assassin 158 Точки

...исках да помогна колкото аз си мога, ха ха, вие пък помагате на мен..

Ами то с тази цел е създаден този форум, въпреки че напоследък, къде неволно, къде не, се е превърнал в „спам трибуна“. За това бих ти препоръчал, когато някой коментира твой код, първо да видиш дали наистина не се опитва да ти даде някакъв съвет, преди да решиш, че се „заяжда“ (не, че няма и такива ;-))
Виждам, че kolioi се е заел да ти помогне с тази задача, а от него може да се научи доста, така че аз се оттеглям от тази тема.
Успех!

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