Loading...
zpapazov avatar zpapazov 5 Точки

26.09.2016 - Data Types and Variables - проблем относно задача 7. Exchange Variable Values

Здравейте колеги,

Проблемът ми е относно задача 7 от упражненията за Data Types and Variables. Работя на Mac OS X, та да не се чудете, ако се различават първите редове от кода с тези на Windows. На пръв поглед изглежда да съм решил задачата без грешка, но като пусна кода в judge-а и ми дава - 0/100. Кодът е:

 

using System;

namespace Exchange_Variable_Values
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            int a = 5;
            int b = 10;
            int c;
            Console.WriteLine("Before: a={0} b={1}", a,b);
            c = a;
            a = b;
            b = c;
            Console.WriteLine("After: a={0} b={1}",a,b);

        }
    }
}

 

Къде би трябвало да ми е грешката и да не би да не съм разбрал условието правилно. Използвах примерно решение от тук

Предварително се извинявам ако съм допуснал някоя глупава грешка.

Поздрави,

Жельо

Тагове:
0
Fundamentals Module
borislav9212 avatar borislav9212 745 Точки

За да размениш стойностите на две променливи, трябва да направиш трета променлива.

           if (a % b != 0)
            {
                int oldB = b;
                b = a % b;
                a = oldB;
            }

0
zpapazov avatar zpapazov 5 Точки

Изглежда интересен кода ти. Може ли да поясниш малко повече или да го допишеш целия, че не мога да хвана логиката така много, както и третата променлива къде я вкарваме по този начин.

0
borislav9212 avatar borislav9212 745 Точки

Използвал съм алгоритъм на евклид

целият код:


            int a = int.Parse(Console.ReadLine());
            int b = int.Parse(Console.ReadLine());
            if (a % b != 0)
            {
                int oldB = b;
                b = a % b;
                a = oldB;
            }
            Console.WriteLine("Before:");
            Console.WriteLine("a = {0}",b);
            Console.WriteLine("b = {0}", a);
            Console.WriteLine("After:");
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);

0
VanessaShopping avatar VanessaShopping 48 Точки

Не съм чел условието на задачата , но по кода на колегата разбирам ,че А винаги е по-малко от Б.

В противен случей ако а е по-голямо кодът няма да ни свърши работа.

Идеята е ,че когато разделим а%б и а е по-малко винаги ,ще влезем в иф проверката , понеже винаги когато разделим по-малко число на по-голямо резултата ще е дробен, т.е. винаги ще е различен от 0. НО ако А=10 , Б=5 резултата ще е 0 и така няма да влезем в иф проверката и задачата ще е грешна. Друг пример: А=10, Б=3. Така пак ще влезем в иф проверката понеже резултата ще различен от 0. Резултата ще е 10%3 = 3 с остатък 1. Тоест резултата ще е 1. И когато принтираме А = Б(А=3), но Б ще е равно на 1

Следователно ако А=5 , Б=10  и ги разделим с % резултата ще е 0 с остатък А( в случея 5 ).

В иф проверката създаваме нова променлива която ще помни Б. oldB = b;

Б= а%б което е 5%10 което е 0 с остатък 5 тоест резултата е 5. Така Б става равно на А

И на третия ред в иф проверката А = oldB където oldB си е Б, тоест А става равно на Б, понеже Б = oldБ

След иф проверката смятам ,че ти е ясно какво се случва .             Console.WriteLine("a = {0}", b); .............

Дано да си ме разбрал. Понеже обеснявам малко на криво :) и може да ти е трудно да ме разбереш

1
koksibg avatar koksibg 892 Точки

Ето ти отговора. Виж внимателно условието. Трябва да ги отпечаташ на отделни редове.

 

http://pastebin.com/T74AJKzZ

0
zpapazov avatar zpapazov 5 Точки

Супер, стана сега вече. Близо съм бил все пак, трябвало е само да ги подредя едно под друго. Мерси много ! 

1
koksibg avatar koksibg 892 Точки

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

0
27/09/2016 23:36:33
dimitur_botev avatar dimitur_botev 112 Точки

Колега, за размяна на числа има един прост трик - размяна чрез събиране. С други думи събираш двете числа, примерно c= a + b;  a = c - a; b = c- a   и си готов ;) От това което виждам трябва да ти свърши работа 

0
28/09/2016 11:44:07
TashevTD avatar TashevTD 1 Точки

Привет,

Според мен трябва да си оправиш форматинга. 

Кодът трябва да изглежда по следния начин: 

Before:

a = 5

b = 10

After:

a = 10 

b = 5

Единствено трябва да сложиш \n на правилните места, за да получиш новите редове.

Поздрави.

0
Stefan24 avatar Stefan24 5 Точки

http://pastebin.com/duh6xqib Най простото според мен е така, пишеш променливите както са си, разменяш ги и ги поставаш отново отдолу (няма нужда от трети променливи) :)

0
MarinaStoycheva avatar MarinaStoycheva 4 Точки

Ето това сътворих аз. Струва ми се прекалено елементарен и не знам до колко е правилен, но ми дава 100/100. 
           

            int a = 5;
            int b = 10;
            int c = b;
            int d = a;

            Console.WriteLine("Before:");
            Console.WriteLine("a = {0}", a);
            Console.WriteLine("b = {0}", b);
            Console.WriteLine("After:");
            Console.WriteLine("a = {0}", c);
            Console.WriteLine("b = {0}", d);

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