Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как на C# сделать возврат в случае ошибки?


Автор: Xeim 16.9.2008, 21:21
Код

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

namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Вариант 11");
            Console.WriteLine("");
            /* Написать программу вычисления сопрсотивления электрической цепи, состоящей из двух параллельно
             * соединенных сопростивлений. Ниже представлен рекомендуемый вид экрана во время работы программы
             * (данные, введенные пользователем, выделены полужирным шрифтом, приведены результаты контрльного примера).
             */
            Console.WriteLine("Задача 1");
            Console.WriteLine("Вычиеление сопростивления электрической цепи");
            Console.WriteLine("при параллельном соединении элементов.");
            Console.WriteLine("Введите исходные данные:");
            int r1;
            int r2;
            int R;
            Console.Write("Величина первого сопростивления (Ом): ");
            if (Int32.TryParse(Console.ReadLine(), out r1))
            {
                Console.Write("Величина второго сопростивления (Ом): ");
                if (Int32.TryParse(Console.ReadLine(), out r2))
                {
                    R = (r1 * r2) / (r1 + r2);
                    Console.WriteLine("Сопростивление цепи: " + R + " Ом.");
                }
                else
                {
                    Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
                    // !!!Отсюда надо бы перейти в начало программы, предварительно очистив экран
                }
            }
            else
            {
                Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
                // !!!Отсюда надо бы перейти в начало программы, предварительно очистив экран
            }
            Console.WriteLine("");
            Console.ReadKey();

            /* Написать программу, которая сравнивает два числа, введенных с клавиатуры. Программа должна указать,
             * какое число больше, или, если числа равны, вывести соответствующее сообщение. Ниже представлен
             * рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены жирными
             * шрифтом).
             */
            Console.WriteLine("Задача 2");
            // !!!Вот сюда <-
            int i1;
            int i2;
            int i;
            string OTN;
            string RAZ;
            OTN = "";
            RAZ = "";
            int V;
            Console.Write("Первое число: ");
            if (Int32.TryParse(Console.ReadLine(), out i1))
            {
                Console.Write("Второе число: ");
                if (Int32.TryParse(Console.ReadLine(), out i2))
                {
                    V = i1 - i2;
                    if (V == 0)
                    {
                        OTN = " равно ";
                    }
                    else if (V > 0)
                    {
                        OTN = " больше ";
                        RAZ = " на " + V + " единицы";
                    }
                    else if (V < 0)
                    {
                        OTN = " меньше ";
                        RAZ = " на " + (V * (-1)) + " единиц";
                    }
                    Console.WriteLine(i1 + OTN + i2 + RAZ);
                }
                else
                {
                    Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
                    // !!!Отсюда надо бы перейти в то место, где есть комментарий "!!!Вот сюда <-"
                }
            }
            else
            {
                Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
                // !!!Отсюда надо бы перейти в то место, где есть комментарий "!!!Вот сюда <-"
            }
            Console.ReadKey();
        }
    }
}


Автор: source777 16.9.2008, 22:11
Ну тык, добро пожаловать в бесконечный цикл, continue приветствует тебя...

Автор: Xeim 16.9.2008, 22:49
Не понял  smile 
При чем тут цикл и continue?

Автор: Hades 16.9.2008, 23:04
Код

bool exit = true;

do
{
    Console.WriteLine("Вариант 11");
    Console.WriteLine("");
    /* Написать программу вычисления сопрсотивления электрической цепи, состоящей из двух па
     * соединенных сопростивлений. Ниже представлен рекомендуемый вид экрана во время работы
     * (данные, введенные пользователем, выделены полужирным шрифтом, приведены результаты к
     */
    Console.WriteLine("Задача 1");
    Console.WriteLine("Вычиеление сопростивления электрической цепи");
    Console.WriteLine("при параллельном соединении элементов.");
    Console.WriteLine("Введите исходные данные:");
    int r1;
    int r2;
    int R;
    Console.Write("Величина первого сопростивления (Ом): ");
    if (Int32.TryParse(Console.ReadLine(), out r1))
    {
        Console.Write("Величина второго сопростивления (Ом): ");
        if (Int32.TryParse(Console.ReadLine(), out r2))
        {
            R = (r1 * r2) / (r1 + r2);
            Console.WriteLine("Сопростивление цепи: " + R + " Ом.");
        }
        else
        {
            Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
            Console.Clear();
            continue;
            // !!!Отсюда надо бы перейти в начало программы, предварительно очистив экран
        }
    }
    else
    {
        Console.WriteLine("(X) Ошибка! Надо было ввести натуральное число.");
        Console.Clear();
        continue;
        // !!!Отсюда надо бы перейти в начало программы, предварительно очистив экран
    }

    exit = false;
} while(exit);

дальше аналогично

Автор: Xeim 18.9.2008, 18:33
Мне еще про while подсказали. Как лучше?

Автор: source777 18.9.2008, 21:05
А как лучше:
читать книжку, пока не запомнишь
или
пока не запомнишь, читать книжку
?

В твоём случае это без разницы, но необходимо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)