Loading...
kostanikolov avatar kostanikolov 45 Точки

Задача "Training lab"

Искам малко помощ за задачата Training lab

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

входни данни са: дължина 15м. ширина 8.9м

https://gist.github.com/kostanikolov/f2b16b8d1f5119adc881abeb1a0f2e71

Програмата ми изкарва 132 места, а трябва да бъдат 129, както и ги изкарвам аз на лист и химикал.

Тагове:
0
Programming Basics
kera123 avatar kera123 3 Точки

Извади ли три места, заради размерите на вратата и катедрата? Без тях стават 129.

0
19/10/2017 13:32:49
kostanikolov avatar kostanikolov 45 Точки

Да, дал съм линк с кода ми. Ако не напиша -3, програмата ми изкарва 135, когато напиша -3 програмата ми изкарва 132, а аз когато си го смятам на листа излиза 129

0
kera123 avatar kera123 3 Точки

          double h = double.Parse(Console.ReadLine());
            
            double w = double.Parse(Console.ReadLine());
            h = h*100;
            w = w*100;
            var h1 = Math.Floor(h / 120);
            var w1 = Math.Floor((w-100)/70);
            
            var reshenie = (w1 * h1) - 3;           
            Console.WriteLine(reshenie);

Аз така го реших и се получава 129 и 39.

0
kostanikolov avatar kostanikolov 45 Точки

Благодаря. Разгледах това решение, но не ми помогна с моят проблем. Формулата, която аз съм написал програмата ми я решава до 132, а аз получавам 129 и не разбирам къде е проблема.

0
kera123 avatar kera123 3 Точки

И аз не разбрах, но все пак съм начинаещ :) .

0
dvdty avatar dvdty 497 Точки

В темата казваш 

Програмата ми изкарва 132 места, а трябва да бъдат 129

а след това

 която аз съм написал програмата ми я решава до 132, а аз получавам 129

0
sevgin0954 avatar sevgin0954 557 Точки

Кажи как го смяташ да ти кажа къде бъркаш и аз го сметнах на лист и ми излиза 132 

0
kostanikolov avatar kostanikolov 45 Точки

double row = Math.Truncate(lenght / 1.2);

double place = Math.Truncate((width - 1) / 0.7 * row - 3);

Това са ми двете формули. При въвеждане 15 за дължина и 8.9 за ширина:

дължината 15 / 1.2 = 12.5 = 12 (реда) при Truncate

ширината 8.9 - 1 за коридора = 7.9

7.9 / 0.7 (ширината на едно работно място) = 11.285 = 11 (работни места на ред) при Truncate

12 (реда) * 11 (места на ред) = 132 места в залата

132 - 3 (заети места от вратата и катедрата) = 129 места за използване в залата

Докато това нещо го смятам така, във Visual Studio ми изкарва 132 като краен резултат.

0
sevgin0954 avatar sevgin0954 557 Точки

11.285 си остава така трънкетва се краиния резултат 11,285 * 12 = 135.4..... смята се това  (width - 1) / 0.7 * row - 3  после резултата се подава на Truncate

0
19/10/2017 15:04:30
kostanikolov avatar kostanikolov 45 Точки

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

0
mjikova avatar mjikova 7 Точки

А къде си извадила коридора? 

Ще копнамоето решение 

Приравних всичко в сантиметри, защото ми е по лесно да работя с цели числа

 

            var h = double.Parse(Console.ReadLine());
            var w = double.Parse(Console.ReadLine());
            var r = h * 100 / 120; // за бюрата на ред по дългата страна на стаята
            var s = (w * 100 - 100) / 70; // за бюрата на ред по късата страна на стаята
            var f = Math.Truncate(r); // променливи за по лесно изчисление
            var t = Math.Truncate(s); // променливаза полесно изчисление
            Console.WriteLine((t * f) - 3);

0
kostanikolov avatar kostanikolov 45 Точки

Благодаря, колега! Разбрах къде ми е грешката в моя код.

Иначе ето тук от width вадя 1 за коридора: double place = Math.Truncate((width - 1) / 0.7 * row - 3);

но така написано не се получава вярно крайното решение.

0
mjikova avatar mjikova 7 Точки

Console.Write("Въведете дължина: "); // 15m
            double lenght = double.Parse(Console.ReadLine());

            Console.Write("Въведете ширина: ");
            double width = double.Parse(Console.ReadLine()); // 8.9m

            double row = Math.Truncate(lenght / 1.2);
            double colomn = Math.Truncate((width - 1) / 0.7) ;   // Тук ти добавих една променлива, защото даваше грешка при рязането на цялото число.

            double place = (row * colomn) - 3; 

            Console.Write("Реда: ");
            Console.WriteLine(row);

            Console.Write("Места: ");
            Console.WriteLine(place);

 

 

 

0
traykova44 avatar traykova44 93 Точки

Ето го моето с .- 3

https://pastebin.com/yEhdDJd6

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