Loading...
KirilKrastev avatar KirilKrastev 1 Точки

19. *Ремонт на плочки - Задача

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

въпрос за задачката с плочките...не се смейте, моля, начинаещ съм :D Написах следното решение, което ми дава много близки резултати, но не е достатъчно....

Задача :

На площадката пред жилищен блок трябва да се поставят плочки. Площадката е с форма на квадрат със страна N метра. Плочките са широки „W“ метра и дълги „L“ метра. На площадката има една пейка с ширина M метра и дължина O метра. Под нея не е нужно да се слагат плочки. Всяка плочка се поставя за 0.2 минути.

Напишете програма, която чете от конзолата размерите на площадката, плочките и пейката и пресмята колко плочки са необходими да се покрие площадката и пресмята времето за поставяне на всички плочки.

Пример: площадка с размер 20м. има площ 400кв.м. Пейка широка 1м. и дълга 2м., заема площ 2кв.м. Една плочка е широка 5м. и дълга 4м. има площ = 20кв.м. Площта която трябва да се покрие е 400 – 2 = 398 кв.м. Необходими са 398 / 20 = 19.90 плочки. Необходимото време е 19.90 * 0.2 = 3.98 минути.

Вход

От конзолата се четат 5 числа:

  • N – дължината на страна от площадката в интервала [1...100]
  • W – широчината на една плочка в интервала [0.1...10.00]
  • L – дължината на една плочка в интервала [0.1...10.00]
  • М – широчината на пейката в интервала [0...10]
  • О – дължината на пейката в интервала [0...10]

            //Обща площ = 20 * 20 = 400; площ на пейката = 1 * 2 = 2
            //Площ за покриване = 400 – 2 = 398
            // Площ на плочки = 5 * 4 = 20
            //Необходими плочки = 398 / 20 = 19.9
            //Необходимо време = 19.9 * 0.2 = 3.98
            //Да се отпечата на конзолата две числа: броят плочки необходи за ремонта и времето за поставяне, всяко на нов ред.

class Program
    {
        static void Main(string[] args)
        {
           double i =double.Parse(Console.ReadLine()); // strana ploshtadka
           double a =double.Parse(Console.ReadLine()); //shirina plochki
           double b =double.Parse(Console.ReadLine()); //duljina plochki
           double c =double.Parse(Console.ReadLine()); //shirina peika
           double x =double.Parse(Console.ReadLine()); //duljina peika
            
     
            double ploshtadka = i * i;
            double ploshtpeika = c * x;
            double ploshtzapokrivane = ploshtadka - ploshtpeika;
            double ploshtplochki = a * b;
            double plochki = (ploshtadka / ploshtplochki);
            double vreme = plochki * 0.2;
         
         
            Console.WriteLine("Plochki = {0} ", + plochki);
            Console.WriteLine("Vreme za slagane = {0} ", vreme);
 
          

        }
    }      
           
}          

Моля за пояснения :D

Благодаря!
 

Тагове:
0
Programming Fundamentals
Simeon.R avatar Simeon.R 198 Точки

Привет, колега. Погледни променливата "plochki". Изчисляваш "ploshtzapokrivane", но не я използваш надолу в кода.

Също така, в дадения пример показва 2 знака след запетаята, виж judge да не ти направи проблем там.

0
11/07/2016 10:22:36
Nikola_Andreev avatar Nikola_Andreev 671 Точки

На пръв поглед всичко изглежда нормално, само на първия Console.Writeline имаш един плюс който не трябва да е там. Може би той ти бърка отговорите.

 

0
borislav9212 avatar borislav9212 745 Точки

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

0
KirilKrastev avatar KirilKrastev 1 Точки

Благодаря, и аз го видях къде съм ги объркал :))

1
desislava777 avatar desislava777 165 Точки

Здравей, колега. Задачата не е никак трудна. Аз също съм начинаещ програмист. Виждам, че си на прав път. Моето решение и подобно на твоето. Разгледай го. Дава ми 100 точки в judge.

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

namespace ConsoleApplication18
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = double.Parse(Console.ReadLine()); //дължина на общата квадратна площ
            var w = double.Parse(Console.ReadLine()); //дължина на плочка
            var l = double.Parse(Console.ReadLine()); //ширина на плочка
            var m = double.Parse(Console.ReadLine()); //дължина на пейка
            var o = double.Parse(Console.ReadLine()); //широчина на пейка
            var areaOb = n * n; //общата квадратна площ
            var areaPlo = w * l; //площ на плочка
            var areaPeika = m * o; //площ на пейка
            var areaPokr = areaOb - areaPeika; //площта за покриване с плочки
            var broyPlo = areaPokr / areaPlo; //брой плочки
            var time = broyPlo * 0.2;//времето за поставяне на плочките, за поставяне на 1 плочка е 0.2
            Console.WriteLine(broyPlo);
            Console.WriteLine(time);
        }
    }
}

0
Bullsized avatar Bullsized 153 Точки

искам да ти дам само един съвет - винаги си кръщавай променливите по разбираме начин. както Влади (един от лекторите) се изрази - пишете си кода така, че като напуснете някоя компания, човека, който дойде да ви замести е психопат и знае къде живеете :) още повече променливи с една буква само - отбягвай такива неща :)

0
Iskrenov avatar Iskrenov 2 Точки

Здравей ...  включвам се малко късно ,  но исках да споделя и моето решение :)

поздрави - http://pastebin.com/ikdLJQ8D

 

0
IlianaDebochichka avatar IlianaDebochichka 1 Точки

Решенията ви са много ценни за начинаещите!

Поздрави!

0
PetarJekov98 avatar PetarJekov98 1 Точки

Console.WriteLine("Plochki = {0} ", + plochki);            <===>           Console.WriteLine("Plochki = {0:f2} ", + plochki);
Console.WriteLine("Vreme za slagane = {0} ", vreme);       <===>   Console.WriteLine("Vreme za slagane = {0:f2} ", vreme);   

 

Трябва само да добавиш :ф2

 

     
 

0
Pavel.belilov avatar Pavel.belilov 0 Точки

Здравейте,

имам проблем с output-а на конзолата, а именно че не печата 0, ако нулата е втората цифра след десетичната запетая (https://imgur.com/a/YwI4F), което кара judge да постави ниска оценка, въпреки че изчисленията и кода са привидно правилни (https://pastebin.com/uXJ0quw2).

Проверих и регионалните настройки на компютъра си, но не виждам проблем там. Те изглеждат ето така (https://imgur.com/2Ko25aH).

Как мога да накарам конзолата да печата и въпросната 0?

Благодаря за помощта :)

 

0
VentsislavTsankov avatar VentsislavTsankov 3 Точки

Здравейте, начинаещ съм и моля за помощ. Попаднах на тази задача от изпит през 2016. Judge ми дава грешки, но не ми показва, къде точно греша в тази на вид елементарна задача. Ето кода:

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

namespace ConsoleApp5
{
    class Program
    {
        static void Main(string[] args)
        {
            double N = double.Parse(Console.ReadLine());
            double W = double.Parse(Console.ReadLine());
            double L = double.Parse(Console.ReadLine());
            double M = double.Parse(Console.ReadLine());
            double O = double.Parse(Console.ReadLine());

            double playground = N * N;
            double slabs = W * L;
            double bench = M * O;
            double AreaToCover = playground - bench;
            double slabsArea = AreaToCover / slabs;
            double coverTime = slabsArea * 0.2;
            Console.WriteLine("{0:f2}", slabsArea); // ако тук използвам Math.Round, отговорът ми вместо 19.90 ще бъде 19.9(което явно е грешно), някой знае ли как мога да го направя без да използвам ("{0:f2}" ?
            Console.WriteLine(Math.Round(coverTime,2));
        }
    }
}

https://judge.softuni.bg/Contests/Practice/Index/181#0 - линк за judge проверка на задачата

Благодаря предварително

0
ivanov_bg3333 avatar ivanov_bg3333 1 Точки

Здравейте! Това е моят отговор на задачата:

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

namespace RemontNaPlochki
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = int.Parse(Console.ReadLine()); // дължината на страна от площадката в интервала
            var w = double.Parse(Console.ReadLine()); // широчината на една плочка в интервала
            var k = double.Parse(Console.ReadLine()); // дължината на една плочка в интервала
            var m = int.Parse(Console.ReadLine()); // широчината на пейката в интервала
            var o = int.Parse(Console.ReadLine()); // дължината на пейката в интервала
            double broiPlochki = ((n * n) - (m * o)) / (w * k);
            double VremeZaPostaviane = broiPlochki * 0.2;
            Console.WriteLine(broiPlochki);
            Console.WriteLine(VremeZaPostaviane);

            
        }
    }
}

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