Проблем със задача 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);
}
}
}
}
Според тебе, тази излишна проверка с какво би била полезна?
Проверката за if(b==0) e необходима,понеже иначе при вход н.р. 100 и 0 ще ни изведе 0,защото няма да влезнем в цикъла,а resulta e сетнат=0.
Аз имах предвид спрямо моя код, където това е избегнато. Защото това е същото като в моя код, плюс една допълнителна проверка, която така или иначе си я има. Не, че няма да даде верен резултат, но мислите ли, че с оглед оптимизиране на изпълнението, повторението на една и съща проверка е удачно?
Съжалявам, но не те разбирам... Бих казала, че всъщност ти правиш излишни неща...
Забавна си ;-Р
Не е необходимо да ме разбираш мене, надявам се да разбереш това, което kolioi много добре е обяснил, за което аз лично му благодаря!
: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;
}
}
}
}
}
}
}
Bake! също е команда, така че я сложи при другите команди и ще стане. След това помисли как да го направиш само с един цикъл - for или while, по твой избор.
Ами то с тази цел е създаден този форум, въпреки че напоследък, къде неволно, къде не, се е превърнал в „спам трибуна“. За това бих ти препоръчал, когато някой коментира твой код, първо да видиш дали наистина не се опитва да ти даде някакъв съвет, преди да решиш, че се „заяжда“ (не, че няма и такива ;-))
Виждам, че kolioi се е заел да ти помогне с тази задача, а от него може да се научи доста, така че аз се оттеглям от тази тема.
Успех!