Метки и траблы с перемещением, юзая GOTO - C#

Узнай цену своей работы

Формулировка задачи:

Собсна мой код, который по идее должен позволять по формуле вычислять значение переменной F, которой присвоен тип Double. Но не линкуются условия - зеленый exception вылезает на M-ке сверху, до инициализации, ругается на отсутствие ссылки. И после GOTO шлет меня в дали далекие, выдавая уже красный exception. Как исправить? Я чайничек, на первом курсе сижу. Кое-что смыслю уже, конечно, но вот успеть самому разобраться ну никак не получается.
            М: int j, h, g, r, d; //вот тут как раз зеленый exception
            j = 0;
            Double F;
            Console.Write("h=");
            h = Convert.ToInt32(Console.ReadLine());
            Console.Write("r=");
            r = Convert.ToInt32(Console.ReadLine());
            Console.Write("g=");
            g = Convert.ToInt32(Console.ReadLine());
            if (h > 2 * r)
               {
                   Console.WriteLine("Начинаем заново, значение недопустимо");
               }
            goto M; //тут красный exception
            if (g+g<h*h)
               {
                   Console.WriteLine("Начинаем заново, значение недопустимо");
               }
            F = Math.Sqrt(Math.Log(r-2*h)/(2*g-h*h))-(g+h)/Math.Sin(2*r);
            Console.WriteLine("F=" + F);
            Console.ReadLine();
            Console.Write("Начать заново?=");
            d = Convert.ToInt32(Console.ReadLine());
            if (d > j)
               {
                   Console.WriteLine("Начинаем заново");
               }
            goto M; //тут красный exception

Решение задачи: «Метки и траблы с перемещением, юзая GOTO»

textual
Листинг программы
            while (true)
            {
                int j, h, g, r, d;
                j = 0;
                Double F;
                while (true)
                {
                    Console.Write("h=");
                    h = Convert.ToInt32(Console.ReadLine());
                    Console.Write("r=");
                    r = Convert.ToInt32(Console.ReadLine());
                    Console.Write("g=");
                    g = Convert.ToInt32(Console.ReadLine());
                    if ((h > 2 * r) || (g + g < h * h))
                        Console.WriteLine("Начинаем заново, значение недопустимо");
                    else
                        break;
                }
 
                F = Math.Sqrt(Math.Log(r - 2 * h) / (2 * g - h * h)) - (g + h) / Math.Sin(2 * r);
                Console.WriteLine("F=" + F);
                Console.ReadLine();
                Console.Write("Начать заново?=");
                d = Convert.ToInt32(Console.ReadLine());
                if (d > j)
                    Console.WriteLine("Начинаем заново");
                else
                    break;
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5