С# - Повторение заданного условия

285
22 сентября 2017, 16:49

Задание: Рассчитать значение функции в заданной точке. Использовать простейшие функции вида Y = 3 – X + 2 * X * X * X, не предусматривающие вычисления суммы ряда или использования рекуррентных формул.

Задание очень простое. Логику я реализовал.

Вопрос в другом: какими способами я могу сделать повтор условия в программе, так, чтобы перед вводом X и после вывода Y, программа запросила пользователя либо нажатие какого-либо числа(т.е X), либо нажатие какой-либо буквы(допустим 'q'), которая будет из себя представлять выход из программы. И чтобы подобный запрос появлялся, естественно, после каждого вывода "y" ровно до тех пор, пока не введу "q"

Я подумал сделать нечто подобное либо циклом while, либо рекурсией, либо и тем и другим.

Однако, ни к чему вразумительному так и не пришёл. Не особо понимаю, как это всё можно здесь реализовать.

Вот мой код.

using System;
namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, this program calculates the value of the function \"y = 3 – x + 2 * x * x * x\"!");
            Console.WriteLine("Please, choose any number or \"q\" to exit this programm.");
            string a = Console.ReadLine();
            if (a == "q")
            {
                return;  // здесь я решил сделать выход из программы через return, ибо другого способа не нагуглил
            }
            else
            {
                int x = Convert.ToInt32(a);
                int y = 3 - x + (2 * x * x * x);
                Console.WriteLine("The value of the function for x=" + x + " is " + y);
                Console.ReadLine();
            }
        }
    }
}

Собственно, что можете посоветовать?

Answer 1

Стыдно не знать про цикл с предусловием

var str = Console.ReadLine();
while (str != "q") 
{
   /*здесь парсите и проверяете ввод, делаете все что вам нужно*/ 
   str = Console.ReadLine();
}
Answer 2
using System;
namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        int x;
        Console.WriteLine("Программа по формуле \"y = 3 – x + 2 * x * x * x\"!");
        do
        {
            Console.Write("Введите значения:");
            x = Convert.ToInt32(Console.ReadLine());
            int y = 3 - x + (2 * x * x * x);
            Console.WriteLine("Значения x=" + x + " is " + y);
            Console.WriteLine("Повторить? y/n");
        }
        while(Console.ReadKey(true).Key == ConsoleKey.Y);
    }
}
Answer 3

Просто в бесконечный цикл завернуть?

static void Main(string[] args)
{
    while(true) {
    ...
    if (a == "q")
    {
        return;
    }
    else
    ...
    }
}
READ ALSO
Учесть кавычки в JSON C#

Учесть кавычки в JSON C#

Получаю с сервера строку вида:

259
__proto__ поможет уменьшить затраты памяти?

__proto__ поможет уменьшить затраты памяти?

Я имею в виду, отличаются ли затраты памяти на:

244
Найти город в строке js

Найти город в строке js

Есть строки, к примеру:

282
Аргументы стрелочной функции

Аргументы стрелочной функции

Доброго времени суток

319