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

има ли друг начин да се реши тази задача?

(аз съм начинаещ)

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

 


{
    class Program
    {
        static void Main(string[] args)
        {
            double vacationCost = double.Parse(Console.ReadLine());
            int puzzles = int.Parse(Console.ReadLine());
            int dolls = int.Parse(Console.ReadLine());
            int teddyBears = int.Parse(Console.ReadLine());
            int minions = int.Parse(Console.ReadLine());
            int trucks = int.Parse(Console.ReadLine());

            double sum = (puzzles * 2.6) + (dolls * 3) + (teddyBears * 4.1) + (minions * 8.2) + (trucks * 2);

            int howManyToys = puzzles + dolls + teddyBears + minions + trucks;

            if (howManyToys >= 50)

            {
                double discount = sum * 0.25;
                double totalPrice = sum - discount;
                totalPrice = totalPrice - (totalPrice * 0.10);
                if (vacationCost <= totalPrice)
                {
                    Console.WriteLine("Yes! {0:f2} lv left.", totalPrice - vacationCost);
                }
                else
                {
                    Console.WriteLine("Not enough money! {0:f2} lv needed.", Math.Abs(totalPrice - vacationCost));
                }


            }
            else
            {
                double totalPrice = sum;
                totalPrice = totalPrice - (totalPrice * 0.10);
                if (vacationCost <= totalPrice)
                {
                    Console.WriteLine("Yes! {0:f2} lv left.", totalPrice - vacationCost);
                }
                else
                {
                    Console.WriteLine("Not enough money! {0:f2} lv needed.", Math.Abs(totalPrice - vacationCost));
                }
                      
        }
    }
}
 

 

в джъдж вика че е вярно но аз в началото се опитвах да го напиша по друг начин като исках Console.WriteLine да бъде извън if/else само че не знам дали това е възможно и вярно (начина по който аз го писах не работеше в началото) 

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

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

 

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

 

Може да изнесеш декларацията и общите сметки на totalPrice преди if (howManyToys >= 50), а в него да оставиш само модификацията му конкретно за този случай.

 

Това е модифицираното ти решение.

 

0
21/01/2019 04:54:27
jghphhhf avatar jghphhhf 1 Точки

благодаря за отговора

 

имам същия въпрос за друга задача

 

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

namespace Scholarship
{
    class Program
    {
        static void Main(string[] args)
        {
            double income = double.Parse(Console.ReadLine());
            double grade = double.Parse(Console.ReadLine());
            double minimumWage = double.Parse(Console.ReadLine());
            double SocialScholarship = minimumWage * 0.35;
            double GeniusScholarship = grade * 25;

            if (minimumWage <= income && grade <= 4.50)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }
            else if (grade <= 4.50 && minimumWage >= income)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }
            else if (grade >= 4.50 && grade <= 5.49 && minimumWage <= income)
            {
                Console.WriteLine("You cannot get a scholarship!");
            }
            else if (minimumWage <= income && grade >= 5.50)
            {
                Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(GeniusScholarship)} BGN");
            }
            else if (minimumWage >= income && grade >= 5.50)
            {
                Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(GeniusScholarship)} BGN");
            }
            else if(grade >= 4.50 && grade <= 5.49 && minimumWage >= income)
            {
                Console.WriteLine($"You get a Social scholarship {Math.Floor(SocialScholarship)} BGN");
            }
           

        }
    }
}
 

 

излезе ми 100/100 в джъдж ама тоя код е много грозен и сложен и със сигурност има по-лесни начини да се реши, ако някой има време и му се занимава може да напише друг начин че да се просветля малко

 

 

0
MartinBG avatar MartinBG 4803 Точки

Следващият път ще е добре да даваш условието на задачата и линк към нея в Judge smiley

 

Това е решението ти, изчистено от повторяема логика:

using System;

namespace Scholarship
{
    class Program
    {
        static void Main(string[] args)
        {
            double income = double.Parse(Console.ReadLine());
            double grade = double.Parse(Console.ReadLine());
            double minimumWage = double.Parse(Console.ReadLine());
            double SocialScholarship = minimumWage * 0.35;
            double GeniusScholarship = grade * 25;

            if (grade >= 5.50)
            {
                Console.WriteLine($"You get a scholarship for excellent results {Math.Floor(GeniusScholarship)} BGN");
            }
            else if(grade >= 4.50 && minimumWage >= income)
            {
                Console.WriteLine($"You get a Social scholarship {Math.Floor(SocialScholarship)} BGN");
            } 
            else {
                Console.WriteLine("You cannot get a scholarship!");
            }
        }
    }
}

 

0
25/01/2019 22:46:00
jghphhhf avatar jghphhhf 1 Точки

мерси

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

 

 

 

 

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