Разбор строкового выражения. Алгоритм Рутисхаузера

Автор: Пользователь скрыл имя, 08 Декабря 2011 в 17:58, курсовая работа

Описание работы

«С – удобный, выразительный и гибкий язык, пригодный для программирования широкого класса задач», – таково мнение создателей С Брайана Кернигана и Дениса Ритчи. Язык С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня многие операционные системы написаны на С++.
С++ – это язык, расширяющий возможности С. Его разработал Бьерн Страуструп. Название С++ предложил Рик Массити. Оно указывает на эволюционную природу перехода к нему от С, так как «++» – это операция приращения в С.

Содержание

Введение. 4
Математическая формулировка задачи. 6
Описание программы…………………………………………………………………………………..7
Руководство пользователя 8
Выводы (заключение). 10
Список использованной литературы. 11
Приложение 1 (текст программы). 12

Работа содержит 1 файл

КУРСОВОЕ ПРОЕКТИРОВАНИЕ.docx

— 206.75 Кб (Скачать)

            case '+':  include_answer(pos-1,left+right+3,x+y); break;  

            case '-':  include_answer(pos-1,left+right+3,x-y); break

            case '*':  include_answer(pos-1,left+right+3,x*y); break;  

            case '/':  include_answer(pos-1,left+right+3,int(x/y)); break

            default: exit(EXIT_FAILURE);

      }

} 

void include_answer(int pos, int count, int res)  //вставляем результат res в строку начиная с позиции pos

{

      int tmp=sign[pos+1]-1;

      char result[32]={0};

      itoa(res,result,10);

      for(int i=pos;i<len+count-1;i++)  //удаляем старые скобки и операнды

      {

            str[i]=str[i+count-1];

            sign[i]=sign[i+count-1];

      }

      len-=count-1;

      for (int i=len+strlen(result);i>pos;i--)   //чистим место для результата

      {

            str[i]=str[i-strlen(result)+1];

            sign[i]=sign[i-strlen(result)+1];

      }

      for (int j=strlen(result); j; j--)  //вставляем результат

      {

            str[pos+j-1]=result[j-1];

            sign[pos+j-1]=tmp;  //и ставим приоритет результата в допполнительном массиве

      }

      len+=strlen(result)-1;   //длину обрезаем

                  cout<<str;

                  cout<<"\n";

} 

bool no_bracket()  //проверка на наличие скобок

{

      for (int i=0; i<len; i++)

            if (str[i]=='('||str[i]==')')

                  return true;

      return false;

} 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Информация о работе Разбор строкового выражения. Алгоритм Рутисхаузера