9. * Ремонт на плочки
Здравейте! Може ли помощ с една задача, в Visual Studio работи, но в Judje дава само 10 точки.
Това е решението ми: https://pastebin.com/R7BcMUvv
Ето я и задачата:
0.* Ремонт на плочки
Първа задача от изпита на 24 април 2016. Тествайте решението си тук.
На площадката пред жилищен блок трябва да се поставят плочки. Площадката е с форма на квадрат със страна 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 5 4 1 2 |
19.90 3.98 |
Обща площ = 20 * 20 = 400; площ на пейката = 1 * 2 = 2 Площ за покриване = 400 – 2 = 398 Площ на плочки = 5 * 4 = 20 Необходими плочки = 398 / 20 = 19.9 Необходимо време = 19.9 * 0.2 = 3.98 |
40 0.8 0.6 3 5 |
3302.08 660.42 |
9.* Ремонт на плочки
Първа задача от изпита на 24 април 2016. Тествайте решението си тук.
На площадката пред жилищен блок трябва да се поставят плочки. Площадката е с форма на квадрат със страна 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 5 4 1 2 |
19.90 3.98 |
Обща площ = 20 * 20 = 400; площ на пейката = 1 * 2 = 2 Площ за покриване = 400 – 2 = 398 Площ на плочки = 5 * 4 = 20 Необходими плочки = 398 / 20 = 19.9 Необходимо време = 19.9 * 0.2 = 3.98 |
40 0.8 0.6 3 5 |
3302.08 660.42 |
По този начин се форматира до втория знак след запетаята:
Console.WriteLine(String.Format("{0:F2}", Plochki));
Console.WriteLine(String.Format("{0:F2}", Time));
така дава 50/100. Имаш и някаква друга грешка.
Този код дава 100/100
using System;
namespace RemontNaPlochki
{
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 Sploshtadka = N * N;
var Speika = M * O;
var Splochka = W * L;
var Plosht = Sploshtadka - Speika;
var Plochki = Math.Round((Plosht / Splochka), 2);
var Time = Math.Round((Plochki * 0.2), 2);
Console.WriteLine(String.Format("{0:F2}", Plochki));
Console.WriteLine(String.Format("{0:F2}", Time));
}
}
}
При вторият нулев тест за Splochka Math.Round ти дава 0, и после делиш на нула, което дава безкрайност.
Много благодаря, сега вече работи!