Автор: Пользователь скрыл имя, 08 Декабря 2011 в 17:58, курсовая работа
«С – удобный, выразительный и гибкий язык, пригодный для программирования широкого класса задач», – таково мнение создателей С Брайана Кернигана и Дениса Ритчи. Язык С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня многие операционные системы написаны на С++.
С++ – это язык, расширяющий возможности С. Его разработал Бьерн Страуструп. Название С++ предложил Рик Массити. Оно указывает на эволюционную природу перехода к нему от С, так как «++» – это операция приращения в С.
Введение. 4
Математическая формулировка задачи. 6
Описание программы…………………………………………………………………………………..7
Руководство пользователя 8
Выводы (заключение). 10
Список использованной литературы. 11
Приложение 1 (текст программы). 12
}
else if(step==1&&(str[i]=='-'||str[
{
if(((str[j]=='*'||str[j]=='/'|
if(((str[j]=='*'||str[j]=='/'|
}
}
for (int i=0, balance=0; i<len-2; i++) //удаляем лишние скобки (сначала ищем)
{
if (str[i]=='(') //если открылась
{
int j;
for (j=i; j<len; j++) //то смотрим, что внутри неё
{
}
if (empty) //если лишние
}
empty=true;
}
}
void _input(int x, int y) //вставляем скобки
{
int right;
for (right=len+1; right>y; right--) //двигаем строку вправо с позиции y на 1 символ
str[right]=str[
str[y+1]=')'; //
++len; //увеличиваем длину
for (right=len+1; right>x; right--) //то же
str[right]=str[
str[x]='('; //с позиции x
++len;
}
void _delete(int x, int y)
{
int left;
for (left=x; left<y-1; left++) //надвигаем правую часть строки на вторую скобку
str[left]=str[
--len;
for (; left<len; left++) //затем ещё раз на первую скобку
str[left]=str[
--len; //получается удаление
}
void do_it()
{
int tmp=0;
for (int i=0, tmp=0; i<len; i++) //ставим приоритеты в вспомогательном символьном массиве
if (str[i]=='(')
sign[i]=++
else if
(str[i]==')'||str[i]=='+'||
sign[i]=--
else if (isdigit(str[i]))
{
sign[i]=++
if (isdigit(str[i+1]))
{
for (++i; isdigit(str[i]);i++)
--i;
}
}
for (int i=0; i<len; i++) //показываем, что //получилось
while (no_bracket()) //пока в выражении есть скобки
get_answer(place_
}
int place_with_max() //получаем
{ //индекс
int index=0; //элемента
for (int i=0; i<len; i++) //строки
if (sign[i]>sign[index]) //с
index=i; /
return index; //приоритетом
}
void get_answer(int pos) //вычисление результата операции с двумя операндами
{
char c;
int i=pos, left=1, right=1;
int x=atoi(str+pos),y; //читаем первый операнд
for (; i<len&&sign[i]==sign[i+1]; i++) //перематываем индекс на конец операнда
++left; //
c=str[++i];
y=(atoi(str+i+1)); //читаем второй операнд
for (++i; i<len&&sign[i]==sign[i+1]; i++) //перематываем индекс
++right; //считаем длину правого операнда
switch (c)
{
Информация о работе Разбор строкового выражения. Алгоритм Рутисхаузера