Софтуерно Инженерство
Loading...
+ Нов въпрос
Aivanov66 avatar Aivanov66 1 Точки

Fruit Shop - Programing Basics

Здравейте,

имам проблем с дадената задача. Във VS всичко ми е наред и върви перфектно, но в Judge ми дава 0/100. Немога да разбера къде греша. ПРЕДВАРИТЕЛНО БЛАГОДАРЯ НА ОТЗОВАЛИТЕ СЕ!!!

Условие :

Напишете програма, която чете от конзолата плод (banana / apple / orange / grapefruit / kiwi / pineapple / grapes), количество (десетично число) и ден от седмицата (Monday / Tuesday / Wednesday / Thursday / Friday / Saturday / Sunday) и пресмята цената според цените от таблиците по-горе. Резултатът да се отпечата закръглен с 2 цифри след десетичната точка. При невалиден ден от седмицата или невалидно име на плод да се отпечата “error”.

 

Моето решение :

 

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

namespace FruitShop
{
    class Program
    {
        static void Main(string[] args)
        {
            var fruit = Console.ReadLine().ToLower();
            var quantity = double.Parse(Console.ReadLine());
            var day = Console.ReadLine().ToLower();

            if (day == "monday" || day == "tuesday" || day == "wednesday" || day == "thursday" || day == "friday")
            {
                if (fruit == "banana")
                {
                    var result = (quantity * 2.50);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "apple")
                {
                    var result = (quantity * 1.20);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "orange")
                {
                    var result = (quantity * 0.85);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapefruit")
                {
                    var result = (quantity * 1.45);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "kiwi")
                {
                    var result = (quantity * 2.70);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "pineapple")
                {
                    var result = (quantity * 5.50);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapes")
                {
                    var result = (quantity * 3.85);
                    Console.WriteLine(Math.Round(result, 2));
                }

            }
            else if (day == "saturday" || day == "sunday")
            {
                if (fruit == "banana")
                {
                    var result = (quantity * 2.70);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "apple")
                {
                    var result = (quantity * 1.25);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "orange")
                {
                    var result = (quantity * 0.90);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapefruit")
                {
                    var result = (quantity * 1.60);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "kiwi")
                {
                    var result = (quantity * 3.00);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "pineapple")
                {
                    var result = (quantity * 5.60);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapes")
                {
                    var result = (quantity * 4.20);
                    Console.WriteLine(Math.Round(result, 2));
                }
            }
            else if (day != "monday" || day != "tuesday" || day != "wednesday" || day != "thursday" || day != "friday" || day != "saturday" || day != "sunday")
            {
                
                Console.WriteLine("error");
            }
          if (fruit != "banana" || fruit != "apple" || fruit != "orange" || fruit != "grapefruit" || fruit != "kiwi" || fruit != "pineapple" || fruit != "grapes")
            {
                Console.WriteLine("error");
            }
            
        }
    }
}
 

Тагове:
0
Основи на програмирането 17/10/2016 23:58:25
krasi1105 avatar krasi1105 380 Точки

1. Пропусната ';' на последната проверка с else

2.Първо четеш количеството, а след това- деня. Програмата ти ги дава наобратно и когато иска да прочете денят му даваш число, а количеството- ден от седмицата.

3.Когато денят е валиден, а плодът не е нямаш проверка с else, а трябва да напишеш "error".

http://pastebin.com/XKJ1S8Ar

1
Aivanov66 avatar Aivanov66 1 Точки

Здравей и благодаря за отговора. Усетих се, че последните ми проверки не са добре и ги оправих. Би ли ги погледнал? Редактирал съм решението си по-горе.

0
krasi1105 avatar krasi1105 380 Точки

Все още данните, които се четат от конзолата са разменени - първо се чете плодът , след това денят и количеството.

Със сегашните проверки ако денят и плодът не са валидни ще изпише error два пъти, а трябва само един.

Направих една булева променлива, която проверява дали плодът или денят са невалидни.

http://pastebin.com/Vqkv6TR1

1
Aivanov66 avatar Aivanov66 1 Точки

Мисля, че с последната редакция се получи. Judge прие кода, а и като цяло го написах доста по-умно. 

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

namespace FruitShop
{
    class Program
    {
        static void Main(string[] args)
        {
            var fruit = Console.ReadLine().ToLower();
            
            var day = Console.ReadLine().ToLower();

            var quantity = double.Parse(Console.ReadLine());


            if (day == "monday" || day == "tuesday" || day == "wednesday" || day == "thursday" || day == "friday")
            {
                if (fruit == "banana")
                {
                    var result = (quantity * 2.50);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "apple")
                {
                    var result = (quantity * 1.20);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "orange")
                {
                    var result = (quantity * 0.85);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapefruit")
                {
                    var result = (quantity * 1.45);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "kiwi")
                {
                    var result = (quantity * 2.70);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "pineapple")
                {
                    var result = (quantity * 5.50);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapes")
                {
                    var result = (quantity * 3.85);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else
                {
                    Console.WriteLine("error");
                }

            }
            else if (day == "saturday" || day == "sunday")
            {
                if (fruit == "banana")
                {
                    var result = (quantity * 2.70);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "apple")
                {
                    var result = (quantity * 1.25);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "orange")
                {
                    var result = (quantity * 0.90);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapefruit")
                {
                    var result = (quantity * 1.60);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "kiwi")
                {
                    var result = (quantity * 3.00);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "pineapple")
                {
                    var result = (quantity * 5.60);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else if (fruit == "grapes")
                {
                    var result = (quantity * 4.20);
                    Console.WriteLine(Math.Round(result, 2));
                }
                else
                {
                    Console.WriteLine("error");
                }
            }
            else

            {
                Console.WriteLine("error");
            }
            
        }
    }
}
 

0
koksibg avatar koksibg 895 Точки

Ето и едно решение от мен:

http://pastebin.com/2H7VT30P

И вместо Console.WriteLine(Math.Round(result, 2));

можеш да пробваш така:

Console.WriteLine("{0:f2}", result);

Това ти закръгля отново до 2 знак след десетичната запетая.

 

0
Aivanov66 avatar Aivanov66 1 Точки

Здравей и благодаря за полезната информация! Задължително ще го изпробвам :)

1
borislav9212 avatar borislav9212 746 Точки

Здравей,

Понеже си нов във форума, предполагам не знаеш, че има правила във форума. Когато имаш код повече от 15 реда използвай pastebin.com.

0
Aivanov66 avatar Aivanov66 1 Точки

Благодаря, 

ще взема забележката ти предвид!

0