Софтуерно Инженерство
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 746 Точки

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

0
KirilKrastev avatar KirilKrastev 1 Точки

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

1
desislava777 avatar desislava777 162 Точки

Здравей, колега. Задачата не е никак трудна. Аз също съм начинаещ програмист. Виждам, че си на прав път. Моето решение и подобно на твоето. Разгледай го. Дава ми 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 2 Точки

Здравейте, начинаещ съм и моля за помощ. Попаднах на тази задача от изпит през 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