Amir Hossein Hmd Ответов: 2

Алгоритм работы пиццерии, какой из них лучше?


Эй там, я хочу написать алгоритм для пиццерии (с#)

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

и прямо сейчас я хочу знать, какой из наших алгоритмов лучше?

скажите, какой из них лучше и правильнее? (с разумом)

Что я уже пробовал:

Console.WriteLine("Welcome! We have 3 different sizes, which do you want?: 1.Small - 2.Meduim - 3.Large");
            Console.Write("Enter Your Selection: ");
            int userSelection = int.Parse(Console.ReadLine());
            int price = 0;
            //there is my code:

            switch (userSelection)
            {
                case 1:
                    price += 5;
                    Console.WriteLine("You are selected Small size, We'll send you :)");
                    Console.WriteLine("Price: " + price + "$");
                    break;

                case 2:
                    price += 10;
                    Console.WriteLine("You are selected Medium size, We'll Send you :)");
                    Console.WriteLine("Price: " + price + "$");
                    break;

                case 3:
                    price += 15;
                    Console.WriteLine("You are selected Large size, We'll Send you :)");
                    Console.WriteLine("Price: " + price + "$");
                    break;

                default:
                    Console.WriteLine("Please enter the number of size that you want! (1 - 3)");
                    break;

//this is my friend's code:

switch (userSelection)
            {
                case 1:
                    price += 5;
                    break;

                case 2:
                    price += 5;
                    goto case 1;

                case 3:
                    price += 5;
                    goto case 1;
                default:
                    Console.WriteLine("please enter number of your selection");
                    break;
            }

            if (price != 0)
            {
                Console.WriteLine("Your selection is " + userSelection + ", we'll send you");
                Console.WriteLine("Price: " + price);
            }
            }

		    
                    

[no name]

"пожалуйста, скачайте zip-файл", ха-ха-ха ... нет

Amir Hossein Hmd

о! извините! я совсем забыл :)

[no name]

Твой друг побеждает. Любой, кто достаточно смел, чтобы использовать повсеместно презираемое "Гото", должен быть гением кодирования.

Amir Hossein Hmd

ЛОЛ...!!! спасибо

Patrice T

Нет! перечислите 2 части кода в вопросе
кроме того, опишите, что должен делать этот алгоритм.

Ravi Bhavnani

ИМХО, твой друг сидит на наркотиках. Использование goto для перехода куда угодно, кроме конца блока, крайне не рекомендуется, поскольку это делает практически невозможной математическую проверку правильности алгоритма. Рекомендую почитать этот документ: http://homepages.cwi.nl/~буря/преподавания/чтения/Dijkstra68.формат PDF.

Amir Hossein Hmd

Спасибо!

2 Ответов

Рейтинг:
2

Patrice T

второй код определенно хуже. С помощью goto's для такой простой задачи является признаком того, что вашему другу нужно улучшить свое понимание программирования.
Ваш код едва ли лучше, но оба ваших кода слишком сложны.
минимальный код будет выглядеть так, если предположить, что пользовательский ввод верен:

string pizza_size[]= {"Small", "Medium", "Large"};
int pizza_price[]= {5, 10, 15};
int userSelection = int.Parse(Console.ReadLine());
string size= pizza_size[userSelection-1];
int price= pizza_price[userSelection-1];
Console.WriteLine("You are selected "+ size+ " size, We'll send you :)");
Console.WriteLine("Price: " + price + "$");


Рейтинг:
1

OriginalGriff

Ну, там нет никакого алгоритма в любом случае - это "стильная вещь", и версия вашего партнера провалила бы большинство обзоров кода только для использования goto излишне.

- Я? Я бы установил цену каждого из них как постоянное значение над методом и установил его один раз внутри переключателя вместо добавления значений. Я бы также использовал строковое" читаемое человеком " описание, которое я бы поместил в переменную, чтобы вывод консоли выполнялся в одном месте и только в одном месте.


[no name]

И использовать метод tryparse