Цикл переключения c #, суммируя итоги для каждого случая - PullRequest
0 голосов
/ 26 марта 2011

У меня есть 2 кода, которые я хочу объединить в 1, и у меня много проблем с этим.Код должен запросить номер группы, затем сумму пожертвования и вернуться к ней до тех пор, пока они не нажмут 0. После того, как они нажмут 0, он должен показать общее количество для всех групп.Вот 2 различных кода

код 1

using System;
public class TotalPurchase
{
    public static void Main()
    {
        double donation;
        double total = 0;
        string inputString;
        const double QUIT = 0;
        Console.WriteLine("Please enter the amount of the contribution: ");
        inputString = Console.ReadLine();
        donation = Convert.ToDouble(inputString);
        while(donation != QUIT)
        {
            total += donation;
            Console.WriteLine("Enter next donation amount, or " +
                QUIT + " to quit ");
            inputString = Console.ReadLine();
            donation = Convert.ToDouble(inputString);
        }
        Console.WriteLine("Your total is {0}", total.ToString("C"));
    }
}

код 2

using System;
namespace donate
{

class donate
{
    public static void Main()
    {


        begin:
        string group;
        int myint;
        Console.WriteLine("Please enter group number (4, 5, or 6)");
        Console.WriteLine("(0 to quit): ");
        group = Console.ReadLine();
        myint = Int32.Parse(group);

            switch (myint)
            {
                case 0:
                    Console.WriteLine("Bye.");
                    break;
                case 4:
                case 5:
                case 6:
                     double donation;

                     string inputString;

                    Console.WriteLine("Please enter the amount of the contribution: ");
                    inputString = Console.ReadLine();
                    donation = Convert.ToDouble(inputString);
                    goto begin;
                default:
                    Console.WriteLine("Incorrect grade number.", myint);
                    goto begin;
                }




        }       
    }
}

Так что в основном я хочу найти сумму для каждой группы, используя 2-й код.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

Вы очень близки с Кодом 2. Если вы поместите Код 2 внутрь цикла, это сработает!

Единственный код, который я написал для вас здесь, объявлен myint вне цикла while и инициализировал его ненулевым значением.

    double total = 0;
    int myint = -1;

    while (myint != 0)
    {
        string group;

        Console.WriteLine("Please enter group number (4, 5, or 6)");
        Console.WriteLine("(0 to quit): ");
        group = Console.ReadLine();
        myint = Int32.Parse(group);

        switch (myint)
        {
            case 0:
                Console.WriteLine("Bye.");
                break;
            case 4:
            case 5:
            case 6:
                double donation;
                string inputString;
                Console.WriteLine("Please enter the amount of the contribution: ");
                inputString = Console.ReadLine();
                donation = Convert.ToDouble(inputString);
                total += donation;
                break;
            default:
                Console.WriteLine("Incorrect grade number.", myint);
                break;
        }
    }

    Console.WriteLine("Your total is {0}", total.ToString("C"));
0 голосов
/ 26 марта 2011

Не используйте Goto, как это.Просто используйте другой цикл while, как вы это делали в первом сегменте кода.

Было бы гораздо более кратким сказать:

if (myInt > 3 && myInt < 7) { ... }

вместо использования этого оператора switch.

По сути, ваш код для суммирования суммы пожертвования делает свое дело, так что просто вставьте его в аналогичный цикл, который обрабатывает номер группы.Если вы сделаете это, вы захотите использовать другой ввод, чтобы обозначить окончание пожертвований по сравнению с окончанием ввода в целом.Было бы странно, если бы приложение сообщило «Введите 0, чтобы выйти из ввода», а затем «Введите 0, чтобы выйти из пожертвования».

...