Главная страница
Навигация по странице:

  • ЗАДАНИЕ

  • . Блок-схема алгоритма 15 Приложение 3. Исходный кодпрограммы

  • Курсовой Халиуллин. Приложение Калькулятор


    Скачать 76.71 Kb.
    НазваниеПриложение Калькулятор
    Дата02.03.2022
    Размер76.71 Kb.
    Формат файлаdocx
    Имя файлаКурсовой Халиуллин.docx
    ТипКурсовая
    #379621


    МИНОБРНАУКИ РОССИИ

    Санкт-Петербургский государственный

    электротехнический университет

    «ЛЭТИ» им. В.И. Ульянова (Ленина)

    Кафедра информационной безопасности


    Курсовая РАБОТА

    по дисциплине «Программирование»

    Тема: Приложение «Калькулятор»

    Студент гр. 1364







    Преподаватель




    Халиуллин Р.А.



    Санкт-Петербург

    2021

    ЗАДАНИЕ

    на курсовую работу


    Студент

    Группа 1364

    Тема работы: Приложение «Калькулятор»


    Исходные данные:

    Разработать на языке программирования C или C++ (по выбору студента) приложение для выполнения простых расчетов с использованием основных арифметических операций (сложение, вычитание, умножение, деление). Значения для расчета (не менее двух значений) и арифметическая операция вводятся пользователем. Поддержка вещественных значений (значений с плавающей точкой) не обязательна. Допускается возникновение целочисленного переполнения в результате выполнения арифметической операции. Ввод/вывод значений должен осуществляться в десятичной системе счисления. Приложение должно иметь консольный или графический интерфейс (по выбору студента). В интерфейсе приложения допускается использовать буквы латинского алфавита для транслитерации букв алфавита русского языка. Интерфейс приложения должен быть интуитивно понятным и содержать подсказки для пользователя. В исходном коде приложения должны быть реализованы функции. В исходном коде приложения должны быть реализованы проверки аргументов реализованных функций и проверки возвращаемых функциями значений (для всех функций — как сторонних, так и реализованных). Приложение должно корректно обрабатывать ошибки, в том числе ошибки ввода/вывода, выделения/освобождения памяти и т. д.

    Содержание пояснительной записки:

    Введение, теоретическая часть, реализация программы, результат тестирования программы, заключение, список использованных источников, приложение 1 — руководство пользователя, приложение 2 — блок-схема алгоритма, приложение 3 — исходный код программы.

    Предполагаемый объем пояснительной записки:

    Не менее 15 страниц.

    Дата выдачи задания: 07.11.2021

    Дата сдачи реферата: 24.12.2021

    Дата защиты реферата: 30.12.2021

    Студент







    Преподаватель




    Халиуллин Р.А.


    Аннотация

    Курсовая работа на тему: Приложение «Калькулятор».

    Пояснительная записка содержит: введение, теоретическую часть, реализацию программы, результат тестирования программы, заключение, список используемых источников, приложения.

    Цель работы: разработать на языке программирования C или C++ (по выбору студента) приложение для выполнения простых расчетов с использованием основных арифметических операций (сложение, вычитание, умножение, деление).

    Задачи работы: изучить устройство и историю калькуляторов, разработать и реализовать свою версию калькулятора на языке программирования C++, протестировать его и создать руководство пользователя.

    Summary

    Course work on the topic: The Calculator application.
    The explanatory note contains: introduction, theoretical part, program implementation, program testing result, conclusion, list of sources used, appendices.
    The purpose of the work: to develop an application in the C or C++ programming language (at the student's choice) for performing simple calculations using basic arithmetic operations (addition, subtraction, multiplication, division).
    Tasks of the work: to study the device and history of calculators, to develop and implement your own version of the calculator in the C++ programming language, to test it and create a user manual.

    содержание





    Введение

    6

    1

    Теоретическая часть

    7

    2

    Реализация программы

    8

    3

    Результат тестирования программы

    10




    Заключение

    12




    Список использованных источников

    13




    Приложение 1. Руководство пользователя

    14




    Приложение 2. Блок-схема алгоритма

    15




    Приложение 3. Исходный кодпрограммы

    16


    введение

    Цель работы: Разработать на языке программирования C или C++ (по выбору студента) приложение для выполнения простых расчетов с использованием основных арифметических операций (сложение, вычитание, умножение, деление).

    Задачи работы: изучить устройство и историю калькуляторов, разработать и реализовать свою версию калькулятора на языке программирования C++, протестировать его и создать руководство пользователя.

    1. Теоретическая часть

    Первым известным прототипом калькулятора считается Антикетирский механизм, отнесенный к 2 веку до нашей эры. Данный механизм использовался для расчета движения небесных тел и мог выполнять операции по сложению, вычитанию и делению. Также к прародителям калькуляторов относят счёты, использовавшиеся на Руси с 15 века нашей эры и абак из Древнего Вавилона.

    Уже в 1643 году учёным Блезом Паскалем была создана суммирующая машина, которая легко выполняла операции сложения, но остальные операции, хоть и были возможны, но требовали сложные и долгие процедуры выполнения вычислений. Сама машина из себя представляла коробку с шестеренками и окошками над ними, где выводился ответ.

    В 1673 немецкий математик Готфрид Вильгельм Лейбниц создал свою машину для вычислений, в которой было нововведением рукоятка с цилиндром, которые ускоряли процесс умножения и деления и использовалось в вычислительных машинах до середины 20 века.

    Во второй половине 20 века случилось массовая разработка и использование калькуляторов. В это время были разработаны первые массовые калькуляторы, первые карманные калькуляторы, программируемые калькуляторы, появилась возможность вычислять логарифмы. За это время у калькуляторов также появились графические дисплеи и началось разделение на направленности калькуляторов: простые, инженерные, бухгалтерские, финансовые, медицинские, статистические и другие.

    2. Реализация программы

    Для выполнения курсовой работы выбран язык программирования C++, операционная система Windows 10 на архитектуре x86_64, интегрированная среда разработки Microsoft Visual Studio с компилятором Microsoft Visual C++.

    В программе реализованы две функции, кроме основной функции main.

    Первая из них это функция priority.

    Функция priority определяет приоритет операции, подаваемой на вход.

    Исходный код функции priority расположен в файле CalculatorCursuvaya.cpp.

    Объявление функции:

    int priority(char symbol);

    Тип функции: int.

    Аргументы функции:

    • symbol значение переменной symbol, в которой записана операция, чей приоритет необходимо определить.

    Возвращаемое значение функции:

    • 1 если это операция сложения или вычитания, имеющая низкий приоритет;

    • 2 если это операция умножения или деления, имеющая высокий приоритет;

    • 0 во всех остальных случаях.

    Вторая функция это функция count.

    Функция count производит математические операции с передаваемыми к ней значениями.

    Исходный код функции count расположен в файле CalculatorCursuvaya.cpp.

    Объявление функции:

    int count(std::stack & operations, std::stack & numbers, types& element);

    Тип функции: int.

    Аргументы функции:

    • operations ссылка на стек, в который записана математическая операция, которую необходимо выполнить;

    • numbers ссылка на стек, в котором записаны числа, с которыми необходимо провести операцию;

    • element ссылка на элемент, через который происходит запись в стеки.

    Возвращаемое значение функции:

    • 1 значение первого аргумента является некорректным;

    • 2 значение второго аргумента является некорректным;

    • 3 — значение третьего аргумента является некорректным;

    • 4 значение делителя равно 0;

    • 0 если программа завершилась успешно.

    3. Результаты тестирование программы

    1. После запуска программа предлагает ввести выражение, которое необходимо посчитать (рисунок 1).

    Р исунок 1 Окно программы после запуска

    1. После ведения выражения и нажатия кнопки «Enter» программа выдает результат подсчета выражения (рисунок 2).

    Р исунок 2 — Окно программы после подсчёта выражения

    1. Если ввести как делитель «0», то программа выдаст ошибку (рисунок 3).

    Р исунок 3 — Ошибка, возникшая при делении на 0

    1. Если ввести знаки, отличающиеся от математических операндов и чисел, то программа выдаст ошибку (рисунок 4).

    Р исунок 4 — Ошибка, возникшая при введении некорректного символа
    заключение

    Поставленные задачи были выполнены и добавлены дополнительные функции калькулятора в виде увеличения количества допустимых операций. Все возможные ошибки, которые могут возникнуть при работе калькулятора обрабатываются в программе, в результате чего калькулятор работает безопасно, стабильно и корректно.

    список использованных источников

    1. https://www.cplusplus.com сайт с полной информацией и документацией о функциях и особенностях языка C и C++.


    приложение 1. Руководство пользователя

    Программа представляет из себя калькулятор, выполняющий операции умножения, деления, сложения и вычитания, учитывая скобки, отрицательные числа и десятичные.

    Сведения о минимальных системных требованиях:

    • Процессор: не менее 1ГГц или SoC;

    • ОЗУ: 2ГБ;

    • Последняя версия ОС с архитектурой x86_64;

    • Свободное место на жестком диске: 4мб.

    • Видеоадаптер: DirectX 9 или более поздняя версия с драйвером WDDM 1.0.

    Сведения об установке программы: необходимо разархивировать архив в отдельную папку.

    Сведения о запуске программы: запустить исполняемый файл CalculatorCursuvaya.exe, находящийся в папке Debug.

    Сведения о работе с программой: Запустите исполняемый файл, затем введите в открывшемся окне выражение, которое необходимо посчитать, и нажмите кнопку «Enter», после чего программа выведет вам ответ в поле «Result:».

    приложение 2. Блок-схема алгоритма



    приложение 3. Исходный код программы

    #include

    #include

    #include

    struct types

    {

    char symbol;

    float numeric;

    };
    int count(std::stack & operations, std::stack & numbers, types& element)

    {

    if (&operations == nullptr)

    {

    std::cerr << "Error";

    return 1;

    }

    if (&numbers == nullptr)

    {

    std::cerr << "Error";

    return 2;

    }

    if (&element == nullptr)

    {

    std::cerr << "Error";

    return 3;

    }

    float element1,element2,result;

    element1 = numbers.top().numeric;

    numbers.pop();

    switch (operations.top().symbol)

    {

    case '+':
    element2 = numbers.top().numeric;
    numbers.pop();
    result = element2 + element1;
    element.symbol = '0';


    element.numeric = result;
    numbers.push(element);


    operations.pop();

    break;

    case '-':
    element2 = numbers.top().numeric;
    numbers.pop();
    result = element2 - element1;
    element.symbol = '0';


    element.numeric = result;
    numbers.push(element);


    operations.pop();

    break;

    case '*':
    element2 = numbers.top().numeric;
    numbers.pop();
    result = element2 * element1;
    element.symbol = '0';


    element.numeric = result;
    numbers.push(element);


    operations.pop();

    break;

    case '/':
    if (element1 == 0)
    {
    std::cerr << "Error";
    return 4;
    }
    element2 = numbers.top().numeric;
    numbers.pop();
    result = element2 / element1;
    element.symbol = '0';


    element.numeric = result;
    numbers.push(element);


    operations.pop();

    break;

    }

    return (0);

    }
    int priority(char symbol)

    {

    switch (symbol)

    {

    case '+':

    case '-':

    return 1;

    break;

    case '*':

    case '/':

    return 2;

    break;

    default:

    return 0;

    break;

    }

    }
    int main()

    {

    char symbol;

    float numeric;

    bool flag = true;

    std::stack operations;

    std::stack numbers;

    types element;

    std::cout << "Write the expression\n";

    while (true)

    {

    symbol = std::cin.peek();

    if (symbol == '\n')

    {

    break;

    }

    if (symbol == ' ')

    {

    std::cin.ignore();

    continue;

    }

    if ((symbol >= '0') && (symbol <= '9') || (symbol == '-') && (flag == true))

    {

    std::cin >> numeric;

    element.symbol = '0';

    element.numeric = numeric;

    numbers.push(element);

    flag = false;

    continue;

    }

    if ((symbol == '+') && (flag == true))

    {

    std::cin.ignore();

    continue;

    }

    if ((symbol == '+')||(symbol == '-') && (flag == false) || (symbol == '*') || (symbol == '/'))

    {

    if (operations.size() == 0)

    {

    element.numeric = 0;

    element.symbol = symbol;

    operations.push(element);

    std::cin.ignore();

    continue;

    }

    if (operations.size() != 0 && priority(symbol) > priority(operations.top().symbol))

    {

    element.numeric = 0;

    element.symbol = symbol;

    operations.push(element);

    std::cin.ignore();

    continue;

    }

    if (operations.size() != 0 && priority(symbol) <= priority(operations.top().symbol))

    {

    if (count(operations, numbers, element) !=0)

    {

    return 1;

    }

    continue;

    }

    }

    if (symbol == '(')

    {

    element.numeric = 0;

    element.symbol = symbol;

    operations.push(element);

    std::cin.ignore();

    continue;

    }

    if (symbol == ')')

    {

    while (operations.top().symbol != '(')

    {

    if (count(operations, numbers, element) !=0)

    {

    return 1;

    }

    else

    {

    continue;

    }

    }

    operations.pop();

    std::cin.ignore();

    continue;

    }

    else

    {

    std::cerr << "Error";

    return 2;

    }

    }

    while (numbers.size() > 1)

    {

    if (count(operations, numbers, element) != 0)

    {

    return 1;

    }

    }

    std::cout << "Result: " « numbers.top().numeric<<"\n";

    system("pause");

    return 0;

    }



    написать администратору сайта