Форум программистов, компьютерный форум CyberForum.ru

простейший синтаксический анализатор(Распознавание числа) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти подстроку в файле http://www.cyberforum.ru/cpp-beginners/thread1028661.html
Дан файл text.txt FILE *fp=fopen("c:\\text.txt", "r"); Вводится подстрока char str; cin >> str; Задача: вывести количество вхождений подстроки в файл. С++
C++ Выход за пределы цикла Вообщем необходимо реализовать алгоритм по пунктам от 1 до 27 и в них есть переходы на другие пункты. Есть 2 цикла do while, один от 5 до 17, а второй от 5 до 19 пунктов, проблема в том что надо сделать переход от 14 до 18, а так же сделать полный выход из алгоритма на пункте 11. Да и сделать надо без использования goto. Может кто что посоветовать? http://www.cyberforum.ru/cpp-beginners/thread1028660.html
C++ Геометрическая задача. Программа в виде функции
Доброго времени суток. Прямоугольный треугольник вписана окружность. Точка касания окружности с треугольником делит гипотенузу в отношении 2 к 3. Найти стороны если центр вписанной окружности удален от вершины прямого угла на корень из 8 см. Оформить в виде функции Помогите господа программисты..
C++ написать функцию искажения буквы
Помогите, пожалуйста, написать функцию искажения буквы. Есть словарь, в нем не менее 20 слов. С кл-ры вводятся слова с ошибкой: искажение одной буквы. Ах да, еще интересует вопрос как создать словарь в си++
C++ Изменяется значение при использовании манипуляторов http://www.cyberforum.ru/cpp-beginners/thread1028612.html
Добрый день. Написал перегруженный оператор вывода в поток. Проблема в том, что если num будет начинаться с нулей, то они просто не появятся на экране. Для решения этой проблемы изменил ширину поля и использовал 0 как заполнитель. Проблема в том, что на выходе получаю не 0013, а 0011. Причем если первые нули заменить например на единицы, то на выходе получаю правильное число. В чем может быть...
C++ Написать программу, которая проверяет, является ли год високосным Написать программу, которая проверяет, является ли год високосным. Помогите пожалуйста подробнее

Показать сообщение отдельно
лилиэн
6 / 6 / 0
Регистрация: 22.11.2012
Сообщений: 95
04.12.2013, 19:49     простейший синтаксический анализатор(Распознавание числа)
Это задание является подзаданием для курсовой по формальным языкам.
Мне надо(пока что только это) чтобы моя программа распознавала введенные числа.
Числа могут быть трех форматов:
1)Простое целое число (Пр. 456)
2)Число с точкой(Пр. 78,35)
3)Число с плавающей запятой(Пр. 45Е-78)
С простыми числами все легко.Сделала->работает но когда попыталась добавить код для распознавания чисел с точкой уткнулась носом в лужу!
вот код(ВЕСЬ но он не большой)
Кликните здесь для просмотра всего текста
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
#include<iostream>
using namespace std;
float Number()
{
      float number=0;
      float point=0;
      float position=0;
      for(;;)
      {
              char c=cin.get();
              if((c >= '0') && (c <= '9'))
              {
              number=number*10+(c-'0');
              }
              else
                  if(c=='.')
                  {
                        point=Number();
                        float tmp=point;
                        int del=10;
                        while(tmp)
                        {
                                  tmp/=10;
                                  del*=10;
                        }
                        point=point/del;
                        number+=point;
                        
                  }
                  else
                  {
                  cin.putback(c);
                  break;
                  }
              }
      return number;
}
int main()
{
    float num=Number();
    cout<<"you entered the number:"<<num;
    system("pause");
    return 1;
}

опишу вкратце что я имела ввиду:
Допустим я ввела 12.56
Я считываю 12 натыкаюсь на точку пропускаю ее иду дульше считываю опять число -56 затем узнаю сколько у этого числа разрядов(2) значит надо его поделить на 10^2 и получу 0.56 затем к исходному 12 прибавлю 0.56 и уаля получу 12.56
только почемуто все не так вуаля как хотелось бы отдельно числа считываются но вот незадача....Х*ня какая то получается
П.С мб кто то посоветует хорошую литературу/статьи по нисходящему синтаксическому разбору?
А то то что дают на лекциях совсем беда

Добавлено через 18 минут
ошибку нашла.Оказывается не умею находить количество цифр в числе... tmp был типа float И бесконечно делился) все ок
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru