Loading...

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

remote87 avatar remote87 121 Точки

[HOMEWORK] Math For Developers Problem 6 LCM

Някой може ли да ми обясни:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LeastCommonMultiple
{
    class LeastCommonMultiple
    {
        public static void Main()
        {
            int num1, num2, x, y, lcm;
            Console.Write("Enter the First Number : ");
            num1 = int.Parse(Console.ReadLine()); // въвеждаме 4
            Console.Write("Enter the Second Number : ");
            num2 = int.Parse(Console.ReadLine()); // въвеждаме 12
            x = num1; // x = 4
            y = num2; // y = 12
            while (num1 != num2)
            {
                if (num1 > num2) // 4 > 12
                {
                    num1 = num1 - num2; // кода прескача 
                }
                else
                {
                    num2 = num2 - num1; // 12 = 12 - 4 и 12 вече става 8
                }
            }
            lcm = (x * y) / num1; // Първо мислех, че тук y вече е равно на 8 и (4*8) / 4, но тъй като y е извън циклите всъщност си е 12 или (4*12)/12 = 12. Тогава защо са нужни проверките до момента?!
            Console.Write("Least Common Multiple is : " + lcm);
            Console.Read();
        }
    }
}

Някой може ли да ми обясни логиката, тъй като не виждам общото между кода и обяснението в лекцията и малко се пообърках.

Тагове:
0
Programming Basics 13/08/2015 15:30:37
djc_bg2015 avatar djc_bg2015 923 Точки
Best Answer

Здравей отново,

ето ти логиката на програмата:

num1 = 4
num2 = 12
x = num1 = 4

y = num2 = 12

 

Условие: Изпълнявай докато num1 е различно от num2

 

Проверяваме условието (num1 Е различно от num2)

- Първа итерация:

-- num1(4) < num 2(12) --> num2 = num2(12) - num1(4) = 8

 

Проверяваме условието (num1 Е различно от num2)

- Втора итерация

-- num1(4) < num2(8) --> num2 = num2(8) - num1(4) = 4

 

Проверяваме условието  (num1 НЕ Е различно от num2, прекратяваме цикъла) --> num1(4) == num2(4)

 

lcm = (x(4) * y(12)) / num1(4) = 12

най - малкото общо кратно на 4 и 12 е 12

 

Поздрави!
 

1
13/08/2015 17:25:45
remote87 avatar remote87 121 Точки

Супер!

 

Много благодаря! Видях, къде бъркам и сега ми се изясни! Пропускам факта, че все пак имам while цикъл с ясно условие и if-а се изпълнява докато се изпълни условието на while цикъла - просто, но явно "гледам и не вярвам на ушите си", както се казва :)

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