PDA

Просмотр полной версии : [Программа] Консольный калькулятор с помощью цикла do - while


Awesome kiss
25.09.2012, 19:39
Приветствую всех !
Начал я изучать C# , добрался до цикла do - while , и сделал свое первое творение /bonk

И так , представляю вашему вниманию консольный калькулятор :

[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Делал с помощью урока , коментил от себя :gordon: , прошу строго не судить :pandal: Если есть ошибки то говорите /okay
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace doWhile
{
class Program
{
static void Main(string[] args)
{
bool quit = false; // Объявление переменной и присваивание её значение false
bool flag = false;
float first = 0;// Объявление переменной и присваевание ей значения 0
float second = 0;// Объявление переменной и присваевание ей значения 0
char operation = '\0'; // Объявление оператора

Console.WriteLine(); // Отступ


Console.ForegroundColor = ConsoleColor.DarkGreen; // Изменение цвета инструкции
Console.WriteLine("+ : сложение чисел "); // Инструкция
Console.WriteLine("- : разница чисел "); // Инструкция
Console.WriteLine("* : умножение чисел "); // Инструкция
Console.WriteLine("/ : деление чисел "); // Инструкция
Console.WriteLine("q : выход из программы"); // Инструкция
Console.WriteLine();
Console.ForegroundColor = ConsoleColor.Green; // Изменение цвета

do // Действие цикла
{
try // Делаем то что в блоке , если же не получаеться то переходим в catch
{
Console.Write("Введите первое число : "); // Вывод на консоль
first = float.Parse(Console.ReadLine()); // Выбор первого числа
Console.Write("Введите второе число : ");// Вывод на консоль
second = float.Parse(Console.ReadLine());// Выбор второго числа

Console.Write("Укажите операцию : "); // Вывод на консоль

operation = char.Parse(Console.ReadLine()); // Выбор операции


}
catch
{
flag = true;
Console.ForegroundColor = ConsoleColor.Red; // Изменение цвета консоли в данном блоке
Console.WriteLine("\aВнимательно читайте инструкцию");//Вывод на консоль
Console.ForegroundColor = ConsoleColor.Green; // Возвращаем цвет
}
if(!flag) // значение true
switch (operation) // Оператор switch

{
case '+' : Console.WriteLine ("Сумма чисел составляет : "+ (first + second)); break;// Сложение чисел
case '-' : Console.WriteLine ("Разница числе составляет : "+ (first - second)); break;// Разность чисел
case '*' : Console.WriteLine ("Произведение чисел составляет : "+ first * second); break;// Произведение
case '/' : Console.WriteLine ("Деление числе составляет : "+ first / second); break;// Деление
case 'q' : quit = true ; break; // Выход из программы
default:
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\aВнимательно читайте инструкцию");
Console.ForegroundColor = ConsoleColor.Green;
break; // Если не выполняються выше перечисленные операции то выводиться на консоль предупреждение.


}
}
flag = false; // Возвращение значения false





}
while (!quit); // Выход

}

}
}

ИсходниГ ([Ссылки могут видеть только зарегистрированные и активированные пользователи]) /bonk

Sinyss
25.09.2012, 21:22
case 'q' : quit = true ; break; // Выход из программы
case 'q' : return;
так вроде проще =)

Nickitee
25.09.2012, 21:27
case 'q' : return;
так вроде проще =)
посмотри внимательно зачем нужен флаг "quit".

Awesome kiss
25.09.2012, 22:29
посмотри внимательно зачем нужен флаг "quit".

А можно как нибудь уменьшить код ?

Буянь
25.09.2012, 22:40
Даже в консоль умудряются запихнуть свистелки и перделки D:

Sinyss
26.09.2012, 00:50
посмотри внимательно зачем нужен флаг "quit".
А он и не надо... просто использовать
do {...}
while(true);

Добавлено через 20 минут
Переделал код, удалены переменные: flag, quit. А также if. Сохранена работоспособность... Написал коменты в измененных частях...
do
{
try
{
Console.Write("Введите первое число : ");
first = float.Parse(Console.ReadLine());
Console.Write("Введите второе число : ");
second = float.Parse(Console.ReadLine());
Console.Write("Укажите операцию : ");
operation = char.Parse(Console.ReadLine());
}
catch
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\aВнимательно читайте инструкцию");
Console.ForegroundColor = ConsoleColor.Green;
continue; // переходит к while(), пропускает весь код до него.
}
switch (operation)
{
case '+': Console.WriteLine("Сумма чисел составляет : " + (first + second)); break;
case '-': Console.WriteLine("Разница числе составляет : " + (first - second)); break;
case '*': Console.WriteLine("Произведение чисел составляет : " + first * second); break;
case '/': Console.WriteLine("Деление числе составляет : " + first / second); break;
case 'q': return; // Выход из программы
default:
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\aВнимательно читайте инструкцию");
Console.ForegroundColor = ConsoleColor.Green;
break;
}
}

}
while (true); // Выход

Skilful
01.10.2012, 19:48
Sinyss, в вашем коде "калькулятор" закрывается после завершения действия. ( по мойму не удобно). А вот в коде из первого поста он будет закрыт только после нажатия "q".

Вообще не удобные калькуляторы

FreePVP)))
01.10.2012, 20:05
Ну зачем все так усложнять
Можно же написать калкулятор уравнений
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Подключаем к проекту библиотеку Microsoft.JScript
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
А потом пишем 20 строк кода
using System;
using Microsoft.JScript;
using Microsoft.JScript.Vsa;

class Program
{
static void Main()
{
while (true)
{
Console.Write("Введите уравнение: ");
try
{
var res = Eval.JScriptEvaluate(Console.ReadLine(), VsaEngine.CreateEngine());
Console.WriteLine("Ответ: " + res);
}
catch { Console.WriteLine("Ошибка"); }
}
}
}

Sinyss
01.10.2012, 20:16
Sinyss, в вашем коде "калькулятор" закрывается после завершения действия. ( по мойму не удобно). А вот в коде из первого поста он будет закрыт только после нажатия "q".
У вас что то со зрением....
Вообще не удобные калькуляторы
Потому что они не для этого предназначены...

FreePVP)))
01.10.2012, 20:25
Потому что они не для этого предназначены...
А для чего еще нужны калькуляторы, если не для удобных вычислений?/dgs

Sinyss
01.10.2012, 20:27
А для чего еще нужны калькуляторы, если не для удобных вычислений?
для сдачи лабораторной =)

Awesome kiss
03.10.2012, 15:29
Ну зачем все так усложнять
Можно же написать калкулятор уравнений
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Подключаем к проекту библиотеку Microsoft.JScript
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
А потом пишем 20 строк кода
using System;
using Microsoft.JScript;
using Microsoft.JScript.Vsa;

class Program
{
static void Main()
{
while (true)
{
Console.Write("Введите уравнение: ");
try
{
var res = Eval.JScriptEvaluate(Console.ReadLine(), VsaEngine.CreateEngine());
Console.WriteLine("Ответ: " + res);
}
catch { Console.WriteLine("Ошибка"); }
}
}
}
Для меня это сложно , я делал с помощью того что понимаю /okay

zheka-zh
26.12.2012, 15:12
Awesome kiss, ну в принципе да, способ компактней, но я считаю, что не все этого поймут. =)

Sinyss
26.12.2012, 15:43
Awesome kiss, ну в принципе да, способ компактней, но я считаю, что не все этого поймут. =)
Подключаем библиотеку, юзаем оттуда функцию...
Это даже проще чем написать запрос в "тюрягу".

zheka-zh
27.12.2012, 17:14
Sinyss, ахах, ну в принципе да, только вот такие функции не описываются во всех книгах), их надо знать))) Кстати я где-то видел подобное, только не через JScript, по моему еще даже легче =)

Sinyss
27.12.2012, 18:49
Sinyss, ахах, ну в принципе да, только вот такие функции не описываются во всех книгах), их надо знать))) Кстати я где-то видел подобное, только не через JScript, по моему еще даже легче =)
Eval есть только в скриптовых языках (ну за очень редким исключением)...
В книгах много о чем не пишут, потому что до некоторых идей люди должны уметь доходить сами...