Loading...
dZf1aeA-SpasNikolov131 avatar dZf1aeA-SpasNikolov131 9 Точки

Изпитна задача : Алуминиева дограма

Задача 3. Алуминиева дограма

Фирма-производител на алуминиева дограма приема поръчки за изработката и монтаж със следния ценоразпис за един брой. Фирмата приема само поръчки на едро (над 10 бр.). В зависимост от поръчания брой дограми, фирмата прави различна отстъпка на своите клиенти.
Фирмата предлага също и доставка на поръчките си срещу 60 лв.

 

Размер

Единична цена

Отстъпка от цената

90X130

110 лв.

Над 30 броя – 5%
Над 60 броя – 8%

100X150

140 лв.

Над 40 броя – 6%

Над 80 броя – 10%

130X180

190 лв.

Над 20 броя – 7%
Над 50 броя – 12%

200X300

250 лв.

Над 25 броя – 9%

Над 50 броя – 14%


 


 


 


 


 


 


 

Ако поръчката надвишава 99 броя върху крайната цена се начисляват допълнителни 4% отстъпка (след като се начисли цената за доставка, ако има такава).
При поръчка под 10 бр. на конзолата да бъде изписано "Invalid order"

Вход:

Потребителят въвежда 3 реда:

  1. Брой дограми цяло число в интервала [0..1000];

  2. Вид на дограмите текст "90X130" или "100X150" или "130X180" или "200X300";

  3. Начин на получаване текст

    • С доставка - "With delivery"

    • Без доставка - "Without delivery"

Изход:

Извежда се едно число – стойността на поръчката, в следния формат:

  • "{Обща стойност на поръчката} BGN"

Резултатът да се форматира до втори знак след десетичната запетая.

Примерен вход и изход:

Вход

Изход

Обяснения

40

90X130

Without delivery

4180.00 BGN

 

Цената е: 40 бр. * 110 лв. = 4400.00 BGN
Над 30 броя – 5% отстъпка. 4400 – 5% = 4180.00 BGN

Without delivery -> не се начислява нищо допълнително.

105

100X150

With delivery

12758.40 BGN

Цената е: 105 бр. * 140 лв. = 14700.00 BGN
Над 80 броя – 10% отстъпка. 13230.00 BGN

With delivery - 13230.00 + 60.00 = 13290.00 BGN
Над 100 броя – 4% отстъпка след доставката = 12758.40 BGN

 

2

130X180

With delivery

Invalid order

Поръчката е под 10 броя.

 


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

Тагове:
0
Programming Basics
MartinBG avatar MartinBG 4803 Точки

Примерно решение:

using System;

namespace AluminumWindows
{
    internal static class Program
    {
        private static void Main()
        {
            var count = int.Parse(Console.ReadLine());
            var type = Console.ReadLine();
            var withDelivery = "With delivery".Equals(Console.ReadLine());

            var priceForOne = type switch
            {
                "90X130" => 110.0,
                "100X150" => 140.0,
                "130X180" => 190.0,
                "200X300" => 250.0,
                _ => 0.0
            };

            var discount = type switch
            {
                "90X130" => count > 60 ? 8 : count > 30 ? 5 : 0,
                "100X150" => count > 80 ? 10 : count > 40 ? 6 : 0,
                "130X180" => count > 50 ? 12 : count > 20 ? 7 : 0,
                "200X300" => count > 50 ? 14 : count > 25 ? 9 : 0,
                _ => 0.0
            };

            var totalPrice = count * priceForOne * (100.0 - discount) / 100.0;

            if (withDelivery)
            {
                totalPrice += 60.0;
            }

            if (count > 99)
            {
                totalPrice *= 0.96;
            }

            Console.WriteLine(count < 10 ? "Invalid order" : $"{totalPrice:F2} BGN");
        }
    }
}

 

0
08/11/2020 21:30:47
Giannis avatar Giannis 0 Точки

Че в Program Basics не сме учили по този начин писане на кодове.

И копирам кода в VSC но не мога да го стартирам.

0
MartinBG avatar MartinBG 4803 Точки

Условните конструкции (if, switch) няма как да не са учени в курса.

 

Може би не е показан ?: (ternary conditional operator):

condition ? condition is true : condition is false;

Той е съкратен вариант на:

if (condition)
{
  // condition is true
}
else
{
  // condition is false
}

 

Относно проблема с VSC, може би използвате framework с по стара версия на C#.

Switch expressions са въведени в C# 8.0, който се поддържа от .NET Standard 2.1, .NET Core 3.x или .NET 5.x -  C# language versioning

2
10/11/2020 13:35:13
dZf1aeA-SpasNikolov131 avatar dZf1aeA-SpasNikolov131 9 Точки

А тук защо ми дава грешка на "price"?

https://pastebin.com/8EHRdjcz

0
MartinBG avatar MartinBG 4803 Точки

Защото се опитвате да създадете променлива с едно и също име на редове 13, 18, 31, 42 и 53.

Трябва да остане само първата декларация на price, чиято стойност да се модифицира на следващите редове.

 

Между другото, VSC явно не е добро IDE щом не показва тези грешки - във VS и Rider този код "грейва" директно и е очевидно какъв е проблемът.

0
10/11/2020 18:37:32
dZf1aeA-SpasNikolov131 avatar dZf1aeA-SpasNikolov131 9 Точки

https://pastebin.com/16PVPq35

Добре , а защо като дебъгвам по кода още на 13тия ред където ми е променливата си ми показва направо 2200 ?

Съжелявам , че имам много въпроси , но с това онлайн обучение... ми е пълна Индия.

0
georgiev.tm avatar georgiev.tm 4 Точки

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

ето едно примерно решение

https://pastebin.com/RaX96jRc

 

 

0
georgiev.tm avatar georgiev.tm 4 Точки

П.С.Нещо с проверките ти куца.

Трябва да зададеш диапазон, в който ти е валидно условието, а не както си задал само if >= 30.

В твоя случай ще влиза всяко едно число по голямо от 30, но ти имаш по условие между 30 и 60 примерно.

Виж по горе в линка как съм я разписал.

Поздрави!

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