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

Къде бъркам задача Fruit Shop

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

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

            var result = 0.0;


            if (dayOfWeek == "monday" || dayOfWeek == "tuesday" ||
                dayOfWeek == "wednesday" || dayOfWeek == "thursday" || dayOfWeek == "friday")
            {
                if (fruit == "banana")
                {
                    result = 2.50 * quantity;
                }

                else if (fruit == "apple")
                {
                    result = 1.20 * quantity;
                }

                else if (fruit == "orange")
                {
                    result = 0.85 * quantity;
                }
                else if (fruit == "grapefruit")
                {
                    result = 1.45 * quantity;
                }
                else if (fruit == "kiwi")
                {
                    result = 2.70 * quantity;
                }
                else if (fruit == "pineapple")
                {
                    result = 5.50 * quantity;
                }
                else if (fruit == "grapes")
                {
                    result = 3.85 * quantity;
                }
                else
                {
                    Console.WriteLine("error");
                }

            }

            if (dayOfWeek == "saturday" || dayOfWeek == "sunday")
            {
                if (fruit == "banana")
                {
                    result = 2.70 * quantity;
                }

                else if (fruit == "apple")
                {
                    result = 1.25 * quantity;
                }
                else if (fruit == "orange")
                {
                    result = 0.90 * quantity;
                }
                else if (fruit == "grapefruit")
                {
                    result = 1.6 * quantity;
                }
                else if (fruit == "kiwi")
                {
                    result = 3.00 * quantity;
                }
                else if (fruit == "pineapple")
                {
                    result = 5.60 * quantity;
                }
                else if (fruit == "grapes")
                {
                    result = 4.20 * quantity;
                }
                else
                {
                    Console.WriteLine("error");
                }
            }
            Console.WriteLine(Math.Round(result, 2));
        }
    }
}
 

Тагове:
fbinnzhivko avatar fbinnzhivko 1582 Точки

1.Ползвай pastebin за показване кода.

2.Къде влизаш ако ти дадат невалиден ден?

Работеш код

0
26/03/2017 15:48:30
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

 

след първите ифове за ден от седмицата нямаш Console.WriteLine(Math.Round(result, 2));

0
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

делничните дни.После излизаш от if конструкцията и влизаш в нова. Това най-долу важи за 2рата.

0
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

по-скоро console writeline да отиде преди скобата, тоест да влезе в иф конструкцията за деня

0
AntonKaraivanov avatar AntonKaraivanov 1 Точки

Здрасти направих каквото ме посъветва резултата е същия.Когато въведа примерно   "tomato"  ден от седмицата и количество ми изписва  "error "  и след него ми излиза някаква нула и  judge  ми казва че нямам изход.

0
daniellsbg avatar daniellsbg 20 Точки

Щеше да е добре да напишеш и какви грешки ти дава и какво по-точно те интересува.

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

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

замести с  Console.WriteLine("{0:f2}", result);

0
AntonKaraivanov avatar AntonKaraivanov 1 Точки

Да прав си преди това пробвах и с "  Console.WriteLine("{0:f2}", result);", и резултата е същия но колегата ми каза каква ми е грешката и започвам да я поправям веднага.Благодаря за мнението.

0
DilyanaGeorgieva avatar DilyanaGeorgieva 81 Точки

Аз задачата я виждам по следния начин:

- проверка дали е някой от дните от понеделник до петък с if, вложени if-else или switch за плодовете и цените им;

- проверка дали е събота или неделя, вложени if-else или switch за плодовете и цените им;

- if проверка за това дали цената( с начална стойност 0) е все още нула: ако е >0 -> изпечатване на резултата ; ако =0 -> съобщение за невалидно въвеждане;

Само че съм я писала на Java.

0
spzvtbg avatar spzvtbg 582 Точки

http://pastebin.com/9GgduQrA  -(100/100) нямаше проверка за коректен ден от седмицата освен това отпечатването в случая трябва да се прави във всяка проверка за деня от седмицата така че при подаване на плод да се отпеяатва или резултатът или грешка и накрая ш случаи на некоректен ден програмата невлиза никъде и отпечатва грешка.Колегате са прави най-добре показвай кода си чрез pastebin.com.

 

0
borkins avatar borkins 47 Точки

1. При въвеждане на грешен ден от седмицата, не ти се принтира 'error'.
2. При всяко положение ти се принтира цената, а трябва да се принтира само, ако в дните от седмицата и в плодовете няма грешка.

По-добре е да си изведеш в нова  if - else конструцкия принтирането на резултата и грешката.
Така се избягва повторението на код, увеличава се неговата четимост и се намалява вероятността от допускане на грешки.
if (result > 0) {
    Console.WriteLine(Math.Round(result, 2));
}
else {
    Console.WriteLine("error");
}
 

0
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

http://pastebin.com/GH7u9JhC

така не ти ли е по-лесно? дава 100.

0
AntonKaraivanov avatar AntonKaraivanov 1 Точки

Определено е доста по лесно рещение и се вижда какво ми е липсвало.Благодаря ти ще черпя.

0
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

Радвам се че помогнах с нещо!

Някой ден и ти ще удариш 1 рамо : ) 

0
desislava777 avatar desislava777 163 Точки

Вместо Math.Round(result,2) би трябвало да използваш ("{0:f2}",result) или ( "{0:0.00}",result). Така винаги ще имаш 2 цифри след десетичната запетая. Например ако пишеш в конзолата

banana

Monday

1                   ще излезе 2,5 ако ползваш Math.Round, а иначе ще излезе 2.50 с 0:0.00 или 0:f2. Освен това, трябва да излезе съобщение за грешка, ако се въведе за ден нещо различно от понеделник до неделя. Трябва да има едно допълнително else, което се противопоставя на всички дни-делнични и почивни. Това е твоят код променен, за 100 точки. Промените са с удебелен шрифт:

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

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

            var result = 0.0;


            if (dayOfWeek == "monday" || dayOfWeek == "tuesday" ||
                dayOfWeek == "wednesday" || dayOfWeek == "thursday" || dayOfWeek == "friday")
            {
                if (fruit == "banana")
                {
                    result = 2.50 * quantity;
                }

                else if (fruit == "apple")
                {
                    result = 1.20 * quantity;
                }

                else if (fruit == "orange")
                {
                    result = 0.85 * quantity;
                }
                else if (fruit == "grapefruit")
                {
                    result = 1.45 * quantity;
                }
                else if (fruit == "kiwi")
                {
                    result = 2.70 * quantity;
                }
                else if (fruit == "pineapple")
                {
                    result = 5.50 * quantity;
                }
                else if (fruit == "grapes")
                {
                    result = 3.85 * quantity;
                }
                else
                {
                    Console.WriteLine("error");
                }

            }

            else if (dayOfWeek == "saturday" || dayOfWeek == "sunday")
            {
                if (fruit == "banana")
                {
                    result = 2.70 * quantity;
                }

                else if (fruit == "apple")
                {
                    result = 1.25 * quantity;
                }
                else if (fruit == "orange")
                {
                    result = 0.90 * quantity;
                }
                else if (fruit == "grapefruit")
                {
                    result = 1.6 * quantity;
                }
                else if (fruit == "kiwi")
                {
                    result = 3.00 * quantity;
                }
                else if (fruit == "pineapple")
                {
                    result = 5.60 * quantity;
                }
                else if (fruit == "grapes")
                {
                    result = 4.20 * quantity;
                }
                else
                {
                    Console.WriteLine("error");
                }
            }
            else Console.WriteLine("error");
            Console.WriteLine("{0:f2}",result);

        }
    }
}

0