Программа "Строковый калькулятор"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине

«Программирование на алгоритмических языках»

Рудный 2008

Содержание

Введение

1. Математическая часть

2. Описание алгоритма решения задачи

3. Описание переменных

4. Анализ результатов вычислений

Заключение

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

Приложение

Введение

Слово алгоритм является латинским (от algorithmi) — транслитерация имени математика аль-Хорезми. Это способ решения вычислительных и др. задач, точно предписывающий, как и в какой последовательности получить результат, однозначно определяемый исходными данными.

Алгоритм -- одно из основных понятий математики и кибернетики. В вычислительной технике для описания алгоритма используются языки программирования.

Суть автоматизации решения задачи заключается нахождении по формулировке задачи алгоритма ее решения.

После появления ЭВМ появилась возможность для написания программ на языке программирования. Операции и процедуры, являющиеся элементами алгоритмического описания процесса, для программирования и реализации на ЭВМ удобно записывать на языке программирования, с которого при помощи трансляторов-программ алгоритм автоматически переводится на язык команд (операций) конкретной ЭВМ. При этом одной операции алгоритма может соответствовать в общем случае несколько операций ЭВМ.

Основным в процессе программирования является разработка алгоритма. Это один из наиболее сложных этапов решения задачи с использованием ЭВМ. В начале целесообразно составлять алгоритмы с помощью блок-схем или иным аналогичным способом. После этого проще перейти к записи того же алгоритма на языке программирования. В этой работе продемонстрирован именно такой подход.

1. Математическая часть

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

В калькуляторе должны выполняться такие действия, как: сложения, вычитание, умножение, деление.

Также должны распознаваться скобки и преимуществом выполнения операций — действия в скобках.

Реализовать программу «Строковый калькулятор» необходимо в среде программирования Borland C++.

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

2. Описание алгоритма решения задачи

Для решения задачи составляется блок-схема, с помощью которой проще перейти к записи того же алгоритма на определённом языке программирования.

3. Описание переменных

арифметический программирование строковый калькулятор

При написании блок-схемы решения задачи использованы следующие обозначения переменных:

MN — Введенное выражение

s2 — Выражение в скобках

L — Длина строки выражения

S — Открытие скобки

E — Закрытие скобки

ds — Длина выражения в скобках

Rp — Результат произведения

Rc — Результат частного

Rs — Результат суммы

Rr — Результат разности

x1p, x2p — Множители

x1c, x2c — Делимое и делитель

x1s, x2s — Слагаемые

x1r, x2r — Вычитаемые

y — Результат выражения в скобках

MR — Итоговый результат

4. Анализ результатов вычислений

После запуска программы «Строковый калькулятор» появляется окно, представленное на рисунке 1, в котором необходимо ввести строку для вычисления.

Рисунок 1 — Ввод выражения

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

Рисунок 2 — Результат решения задачи «Строковый калькулятор»

Заключение

Данная курсовая работа демонстрирует автоматизированное решение арифметической задачи, путём написания ее на языке программирования С++. Язык C++ явился мощным и стремительным рывком в развитии программирования. C++ и по сей день занимает господствующее положение среди языков программирования в мире. Огромное множество профессиональных программистов использует именно его при разработке разного рода проектов. Очевидно, этот язык будет сохранять свое солидное положение ещё не один год, при этом по-прежнему развиваясь и совершенствуясь.

При помощи ЭВМ возможно более быстрое вычисление результатов различных задач, учитывая некоторые условия, вводимые пользователем. Автоматизация позволяет сократить время решения задачи.

Задача «Строковый калькулятор», автоматизированная при помощи среды программирования С++, позволяет вычислять любые простые выражения, что позволяет экономить время на расчеты.

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

1. Конспект лекций по дисциплине «Программирование на алгоритмических языках».

2. Леонтьев В. Новейшая энциклопедия персонального компьютера. — М.: ОЛМА-ПРЕСС, 1999.

3. Методические указания к выполнению курсовой работы по дисциплине «Программирование на алгоритмических языках». Составитель: Барышникова Т. А. Рудный, 2008

4. http: //revolution. /programming/10 648. html

5. http: //revolution. /programming/757. html

6. Практикум по программированию: Практ. пособие / В. Е. Алексеев, А. С. Ваулин, Г. Б. Петрова; Под ред. А. В. Петрова. — М.: Высш. шк., 1991.: ил.

Приложение

Код программы

#include < stdio. h>

#include < conio. h>

#include < string. h>

main ()

{

char MN [32];

char s2 [32];

int N, j, i, L, S, E, ds;

int x1p, x2p, Rp=0;

float Rc=0,Rs=0,Rr=0,x1c, x2c, x1s, x2s, x1r, x2r, y, MR=0;

printf («o_On»);

gets (MN);

L=strlen (MN);

for (i=0; i<L;i++)

{

if (MN[i]=='(')

{

S=i;

for (i=S; i<L;i++)

{

if (MN[i]==')')

{

E=i;

}

}

}

}

N=0;

for (i=S+1; i<E;i++)

{

s2[N]=MN[i];

N=N+1;

}

//printf («stroka %sn», s2);

//printf («ns %dn», S);

//printf («ks %dn», E);

ds=E-S;

//umnojenie

for (i=0; i<ds;i++)

{

if (s2[i]=='*')

{

x1p=s2[i-1]-48;

x2p=s2[i+1]-48;

//printf («nX1p=%d», x1p);

//printf («nX2p=%d», x2p);

Rp=(x1p)*(x2p);

printf («npro=%d», Rp);

}

}

//delenie

for (i=0; i<ds;i++)

{

if (s2[i]=='/')

{

x1c=s2[i-1]-48;

x2c=s2[i+1]-48;

if (Rp≠0)

{

if (x1c==x2p)

{

x1c=Rp;

}

if (x2c==x1p)

{

x2c=Rp;

}

}

//printf («nX1%d», x1c);

//printf («nX2%d», x2c);

Rc=(x1c)/(x2c);

printf («ncha=%f», Rc);

}

}

//summa

for (i=0; i<ds;i++)

{

if (s2[i]=='+')

{

x1s=s2[i-1]-48;

x2s=s2[i+1]-48;

if (Rp≠0)

{

if (x1s==x2p)

{

x1s=Rp;

}

if (x2s==x1p)

{

x2s=Rp;

}

}

if (Rc≠0)

{

if (x1s==x2c)

{

x1s=Rc;

}

if (x2s==x1c)

{

x2s=Rc;

}

}

//printf («nX1%f», x1s);

//printf («nX2%f», x2s);

Rs=(x1s)+(x2s);

printf («nsum=%f», Rs);

}

}

//raznost

for (i=0; i<ds;i++)

{

if (s2[i]=='-')

{

x1r=s2[i-1]-48;

x2r=s2[i+1]-48;

if (Rp≠0)

{

if (x1r==x2p)

{

x1r=Rp;

}

if (x2r==x1p)

{

x2r=Rp;

}

}

if (Rc≠0)

{

if (x1r==x2c)

{

x1r=Rc;

}

if (x2r==x1c)

{

x2r=Rc;

}

}

if (Rs≠0)

{

if (x1r==x2s)

{

x1r=Rs;

}

if (x2r==x1s)

{

x2r=Rs;

}

}

//printf («nX1%f», x1r);

//printf («nX2%f», x2r);

Rr=(x1r)-(x2r);

printf («nraz=%f», Rr);

}

}

if (Rp≠0) { y=Rp; } //itog

if (Rc≠0) { y=Rc; }

if (Rs≠0) { y=Rs; }

if (Rr≠0) { y=Rr; }

if (MN[E+1]=='*')

{

MR=y*(MN[E+2]-48);

}

if (MN[E+1]=='/')

{

MR=y/(MN[E+2]-48);

}

if (MN[E+1]=='+')

{

MR=y+(MN[E+2]-48);

}

if (MN[E+1]=='-')

MR=y-(MN[E+2]-48);

printf («nrezultat=%f», MR);

getchar ()

ПоказатьСвернуть
Заполнить форму текущей работой