Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
53 / 53 / 10
Регистрация: 26.09.2013
Сообщений: 277

Как можно улучшить имеющийся консольный калькулятор

09.10.2013, 00:58. Показов 2175. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как можно улучшить ? что можно нового добавить? в целях изучение языка
и как сделать, что когда считается корень, ввести нужно было одно значение,а не как сумма 2?
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
static void Main(string[] args)
        {
 
            Console.WriteLine("Калькулятор!\nВыберите одну из арифметических операций:");
            
            Console.WriteLine(@"
                                Сложение  -1
                                Вычитание -2
                                Умножение -3
                                Деление   -4
                                Корень    -5
                                Степень   -6");
            
            var a = Console.ReadLine();
            
            Console.Write("Введите первое значение: ");
            var b = double.Parse(Console.ReadLine());
 
            Console.Write("Введите второе значение: ");
            var c = double.Parse(Console.ReadLine());
 
            
            switch (a)
            {
                case "1":
                    Console.WriteLine("Результат = {0}", b + c);
                    break;
                case "2":
                    Console.WriteLine("Результат = {0}", b - c);
                    break;
                case "3":
                    Console.WriteLine("Результат = {0}", b * c);
                    break;
                case "4":
                    Console.WriteLine("Результат = {0}", b / c);
                    break;
                case "5":
                    Console.WriteLine("Результат = {0}", Math.Sqrt(b+c));
                    break;
                case "6":
                    Console.WriteLine("Результат = {0}", Math.Pow(b,c));
                break;
                
            }
            
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.10.2013, 00:58
Ответы с готовыми решениями:

Как можно улучшить мой код? Калькулятор
Как можно улучшить мой код? Калькулятор #include <iostream> using namespace std; int main (void) { int a, A, B; ...

Калькулятор, что можно улучшить/переработать
Всем привет!Только закончил писать калькулятор,код прилагается.А теперь, вопросы:что можно улучшить/переработать,общая оценка.А также, что...

Улучшить калькулятор, чтобы можно было продолжить операцию
Написал простейший калькулятор,но нужно сделать так,что бы можно было продолжить операцию var a,b,rez:real;op:char; begin ...

12
7 / 7 / 0
Регистрация: 15.04.2011
Сообщений: 47
09.10.2013, 04:55
Цитата Сообщение от tranquil Посмотреть сообщение
и как сделать, что когда считается корень, ввести нужно было одно значение,а не как сумма 2?
C#
1
Console.WriteLine("Результат = {0}", Math.Sqrt(b));

Цитата Сообщение от tranquil Посмотреть сообщение
как можно улучшить ? что можно нового добавить? в целях изучение языка
В целях изучения языка... Написать самому эти функции. А так же, синусы, косинусы, производные, интегралы и .т.д.
При этом не пользовать класс Math
1
53 / 53 / 10
Регистрация: 26.09.2013
Сообщений: 277
09.10.2013, 12:48  [ТС]
Цитата Сообщение от FullSilence Посмотреть сообщение
Сообщение от tranquil
и как сделать, что когда считается корень, ввести нужно было одно значение,а не как сумма 2?
C#
1
Console.WriteLine("Результат = {0}", Math.Sqrt(b));
это я знаю,а как сделать так чтобы второй вывод не вызывался,что бы было так,введите первое число,я ввел и оно посчитало корень,и не запрашивало видите второе число?
0
 Аватар для Slicker
49 / 49 / 12
Регистрация: 18.01.2013
Сообщений: 169
09.10.2013, 12:53
Цитата Сообщение от tranquil Посмотреть сообщение
это я знаю,а как сделать так чтобы второй вывод не вызывался,что бы было так,введите первое число,я ввел и оно посчитало корень,и не запрашивало видите второе число?

C#
1
2
3
4
if(a!=5){
Console.Write("Введите второе значение: ");
var c = double.Parse(Console.ReadLine());
}
1
53 / 53 / 10
Регистрация: 26.09.2013
Сообщений: 277
09.10.2013, 13:05  [ТС]
Slicker,
так не получается,там нужно наверно задать что когда значение a=5,тогда выполняется условие,а оно не выполняется
0
 Аватар для Slicker
49 / 49 / 12
Регистрация: 18.01.2013
Сообщений: 169
09.10.2013, 13:06
Цитата Сообщение от tranquil Посмотреть сообщение
так не получается,там нужно наверно задать что когда значение a=5,тогда выполняется условие,а оно не выполняется
1. Вы сознательно используете анонимные типы?
2. Вместо "не получается" лучше писать что за ошибка и в каком месте
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
09.10.2013, 14:12
Цитата Сообщение от tranquil Посмотреть сообщение
как можно улучшить ?
добавьте обработку ошибок для деления на 0 и для кв корня при отрицательных чисел
0
53 / 53 / 10
Регистрация: 26.09.2013
Сообщений: 277
09.10.2013, 14:14  [ТС]
Цитата Сообщение от Slicker Посмотреть сообщение
1. Вы сознательно используете анонимные типы?
2. Вместо "не получается" лучше писать что за ошибка и в каком месте
1. Знаю что это,а сказать где они в основном применяются не могу,получается не сознательно
2.Operator '!=' cannot be applied to operands of type 'string' and 'int'-первая ошибка
3.A local variable named 'c' cannot be declared in this scope because it would give a different meaning to 'c', which is already used in a 'parent or current' scope to denote something else-вторая
0
 Аватар для Slicker
49 / 49 / 12
Регистрация: 18.01.2013
Сообщений: 169
09.10.2013, 14:17
Цитата Сообщение от tranquil Посмотреть сообщение
2.Operator '!=' cannot be applied to operands of type 'string' and 'int'-первая ошибка
3.A local variable named 'c' cannot be declared in this scope because it would give a different meaning to 'c', which is already used in a 'parent or current' scope to denote something else-вторая
if(a!="5")

вынесите объявление переменной с за пределы if'a
1
53 / 53 / 10
Регистрация: 26.09.2013
Сообщений: 277
09.10.2013, 14:43  [ТС]
Цитата Сообщение от Slicker Посмотреть сообщение
if(a!="5")
мне нужен корень чтобы считало при значении 5,а не во всех случая кроме 5.
C#
1
2
3
4
5
 if (a == "5")
            {
                Console.Write("Введите второе значение: ");
                c = double.Parse(Console.ReadLine());
            }
при этом запрашивает 3 ввода значений,а нужно 1.
0
 Аватар для Slicker
49 / 49 / 12
Регистрация: 18.01.2013
Сообщений: 169
09.10.2013, 16:16
Цитата Сообщение от tranquil Посмотреть сообщение
мне нужен корень чтобы считало при значении 5,а не во всех случая кроме 5.
C#
1
2
3
4
5
 if (a == "5")
            {
                Console.Write("Введите второе значение: ");
                c = double.Parse(Console.ReadLine());
            }
при этом запрашивает 3 ввода значений,а нужно 1.
Вот именно, что если а не равно 5, то будет требоваться ввод 2 значения, если же а == 5, то условие будет false

Добавлено через 2 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
static void Main(string[] args)
        {
 
            Console.WriteLine("Калькулятор!\nВыберите одну из арифметических операций:");
            
            Console.WriteLine(@"
                                Сложение  -1
                                Вычитание -2
                                Умножение -3
                                Деление   -4
                                Корень    -5
                                Степень   -6");
            
            var a = Console.ReadLine();
            
 
            Console.Write("Введите первое значение: ");
            var b = double.Parse(Console.ReadLine());
            
            var c = 0.0;
            if(a!="5"){
               Console.Write("Введите второе значение: ");
               c = double.Parse(Console.ReadLine());
            }
            
            switch (a)
            {
                case "1":
                    Console.WriteLine("Результат = {0}", b + c);
                    break;
                case "2":
                    Console.WriteLine("Результат = {0}", b - c);
                    break;
                case "3":
                    Console.WriteLine("Результат = {0}", b * c);
                    break;
                case "4":
                    Console.WriteLine("Результат = {0}", b / c);
                    break;
                case "5":
                    Console.WriteLine("Результат = {0}", Math.Sqrt(b));
                    break;
                case "6":
                    Console.WriteLine("Результат = {0}", Math.Pow(b,c));
                break;
                
            }
            
        }
1
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 1
07.05.2015, 11:33
не особо я успел, но как вам такое решение?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleCalc1
{
    class Calc
    {
        static void Main(string[] args)
        {
            while (true)
            {
                double a, b;
                Console.WriteLine("Введите первое значение");
                if (!double.TryParse(Console.ReadLine(), out a)) {
                    continue;
                }
                string q;
                do
                {
                    Console.WriteLine("\nВыберите арифметическое действие:\n" +
                    "- Умножение (введите *)\n" +
                    "- Деление (введите /)\n" +
                    "- Сложение (введите +)\n" +
                    "- Вычитание (введите -)\n" +
                    "- Возвести в степень (введите ^)\n" +
                    "- Корень степени (введите !)");
                    q = Console.ReadLine();
                } while (!ValidateOperationSign(q));
                Console.WriteLine("\nВведите второе значение");
                if (!double.TryParse(Console.ReadLine(), out b))
                {
                    continue;
                }
                if (q == "*")
                {
                    Console.WriteLine("\nРезультат умножения = {0}", a * b);
                }
                else if (q == "/")
                {
                    Console.WriteLine("\nРезультат деления = {0}", a / b);
                }
                else if (q == "+")
                {
                    Console.WriteLine("\nРезультат сложения = {0}", a + b);
                }
                else if (q == "-")
                {
                    Console.WriteLine("\nРезультат вычитания = {0}", a - b);
                }
                else if (q == "^")
                {
                    Console.WriteLine("\nВозведение в степень = {0}", Math.Pow(a, b));
                }
                else if (q == "!")
                {
                    Console.WriteLine("\nКорень степени = {0}", Math.Pow(a, 1 / b));
                }
                Console.WriteLine("\nВыйти Q\nДля продолжения нажмите Enter");
                string z = Console.ReadLine();
                if (z == "Q" || z == "q")
                {
                    break;
                }
            }
        }
 
        private static bool ValidateOperationSign(string sign)
        {
            switch (sign)
            {
                case "*":
                case "/":
                case "+":
                case "-":
                case "^":
                case "!":
                    return true;
            }
            return false;
        }
    }
}
0
141 / 117 / 26
Регистрация: 07.12.2014
Сообщений: 371
07.05.2015, 12:13
В качестве изучения языка и практики напиши калькулятор который будет вычислять любое переданное ему выражение.Не так как сейчас передавая операнды по очереди, а так чтобы ввести в консоль 4*99*(31+12*4) и вычислялся результат)Потребуется написать парсер.Очень хорошая практика)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2015, 12:13
Помогаю со студенческими работами здесь

Плохой калькулятор: как его сделать нормальным? (улучшить код)
Как его сделать нормальным ? :cry: #include <functional> #include <iostream> #include <sstream> #include <string> ...

Подскажите, как можно улучшить компьютер, и можно ли вообще?
отдали системник процессор i5-2310 2.90 GHz,видеокарта AMD Radeon HD 6800,оперативная память 8 Гб,жесткий диск 1 Тб

Как можно сие улучшить?
День добрый. Вот есть задача. Таким образом я её решил. Вопрос: как можно улучшить сие творение? #include <iostream> #include...

Как можно улучшить код
Всем привет, хотелось бы услышать советы по поводу того, как можно сократить этот код или разбить его на части, и стоит ли это делать ...

Как можно улучшить код
Здравствуйте, вы, наверное слышали про метод шифрования - Атбаш, сам по себе он простой, вот его реализация: $alphabet =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru