Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализовать лексический анализатор, ЛЕКСИЧЕСКИЙ АНАЛИЗАТОР 
:(
    Опции темы
Neon111
  Дата 25.4.2015, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Добрый день, у меня такой вопрос, как реализовать лексический анализатор для данного задания:
Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей.
Вот программа в с++:
Код

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <math.h>
#include <iostream>
#include <conio.h>
//---------------------------------------------------------------------------
 
using namespace std;
char* Rus(const char* text);   //Русификация
 
int main()
{
       int a;
    cout << Rus ("Введите сторону треугольника: ") <<endl;//ввод стороны
    cin  >> a;   //вывод стороны 
 
    cout << "\nh: " << sqrt(3.0) * a * 0.5;         // высота
    cout << "\nS: " << sqrt(3.0) * a * a * 0.25;    // площадь
    cout << "\nR: " << a / sqrt(3.0);               // радиус оп.окружности
    cout << "\nr: " << a / (2 * sqrt(3.0));         // радиус вп.окружности
 
        getch();// прерывание
    return 0;
 
}
char bufRus[256];  // Русификация 
char* Rus(const char* text)
{
 CharToOem(text,bufRus);
 return bufRus;
}

 как к ней написать лексический анализатор типо этого?


Код

#include <stdio.h>
#include <ctype.h>
# define NONE -1 // определение (не использовано)
# define NUM 256 // определение (не использовано)
main()
{
int lineno = 1; // инициализация переменной (номер строки)
int tokenval = 0; // инициализация переменной (накопительная величина)
int t; // инициализация переменной (текущий символ)
while(1) // начало цикла
{
t = getchar(); // ввод символа (с клавиатуры)
if (t == ' ' || t == '\t') ; // введен пробел или ТАБ ? (игнорируется)
else if (t == '\n') // иначе, введен ENTER?
lineno++; // номер строки увеличить на 1
else if (isdigit(t)) // иначе, введена цифра?
{ // ( да )
tokenval = t - '0'; // корректировка из символа в абс.значение
t = getchar(); // ввод символа
while(isdigit(t)) // пока символ - цифра
{ // ( цикл )
tokenval = tokenval * 10 + t - '0'; // корректировка: принятая цифра + прежняя сумма умн.на 10
t = getchar(); // ввод символа
}
ungetc(t, stdin); // - отправляет символ обратно в stdin
return t;
}
else // введена не цифра
{
tokenval = 0; // накопительная величина обнуляется
return t;
}
}
}
//---------------------------------------------------------------------------

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

Это сообщение отредактировал(а) Neon111 - 25.4.2015, 10:46
PM MAIL   Вверх
rudolfninja
Дата 25.4.2015, 10:59 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



А зачем вам тут лексический анализатор? У вас на входе только сторона треугольника, что анализировать?
PM MAIL Skype   Вверх
Neon111
Дата 27.4.2015, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



задание такое дали,можете помочь?

Цитата

А зачем вам тут лексический анализатор? У вас на входе только сторона треугольника, что анализировать?

PM MAIL   Вверх
xvr
Дата 27.4.2015, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Neon111 @  27.4.2015,  14:17 Найти цитируемый пост)
задание такое дали

Ваше задание из серии - 'Летели два крокодила, один зеленый второй на юг. Определить сколько мне лет.'
Уточните у автора задания, что за 'лексический анализатор' понадобился для задания по геометрии уровня 6-7 класса общеобразовательной школы?


PM MAIL   Вверх
baldina
Дата 27.4.2015, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Дали ему задание (почему такое - неважно, т.к. учебное), описали пути решения. Для совмещения двух программ скилла не хватает (ТС не понимает ни как устроены обе программы, ни чего от него хотят, и готов за деньги прокатиться на такси с ленинградского на ярославский).
Автор задания хочет увидеть требуемый уровень понимания. 
И всего-то надо cin>>var заменить на готовый "лексический анализатор".
PM MAIL   Вверх
rudolfninja
Дата 27.4.2015, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 341
Регистрация: 19.2.2013
Где: г. Минск

Репутация: 1
Всего: 6



Цитата(baldina @  27.4.2015,  15:31 Найти цитируемый пост)
И всего-то надо cin>>var заменить на готовый "лексический анализатор". 

Я что то не могу сообразить, как тут применить лексический анализатор, тем более по примеру, описанному автором.
Неужели требуется проверка правильности ввода параметра a?
PM MAIL Skype   Вверх
Neon111
Дата 27.4.2015, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Цитата(xvr @  27.4.2015,  14:47 Найти цитируемый пост)
Ваше задание из серии - 'Летели два крокодила, один зеленый второй на юг. Определить сколько мне лет.'
Уточните у автора задания, что за 'лексический анализатор' понадобился для задания по геометрии уровня 6-7 класса общеобразовательной школы?



документ смотрите не я придумал это, если бы знал что и как тут делать не просил бы помощи... вариант задания в таблице №6

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Архив_WinRAR__2_.rar 63,57 Kb
PM MAIL   Вверх
Neon111
  Дата 27.4.2015, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Цитата(rudolfninja @  27.4.2015,  17:16 Найти цитируемый пост)
Я что то не могу сообразить, как тут применить лексический анализатор, тем более по примеру, описанному автором.
Неужели требуется проверка правильности ввода параметра a? 

смотрите документ в архиве -ниже, я скинул задание, может где то не так выразился,очень нужна помощь..вариант №6, в долгу не останусь!

Добавлено через 6 минут и 9 секунд
мне бы какой нибудь самый простой анализатор для этого задания..

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Архив_WinRAR__2_.rar 63,57 Kb
PM MAIL   Вверх
baldina
Дата 27.4.2015, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(rudolfninja @  27.4.2015,  17:16 Найти цитируемый пост)
как тут применить лексический анализатор

у него вторая программа - искомый анализатор, умеющий считывать целые, что и требуется для чтения длины стороны треугольника взамен cin>>a

Добавлено через 3 минуты и 24 секунды
только в задании совсем не то, что он просит)))

PM MAIL   Вверх
Neon111
  Дата 27.4.2015, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Цитата(baldina @  27.4.2015,  19:44 Найти цитируемый пост)
только в задании совсем не то, что он просит)))

в смысле не то,что я прошу?не понял.Я же указывал в задании для данного задания реализовать лексический анализатор, часть работы я сделал, прошу помощи в  остальной-где анализатор,программу для самого задания я написал, с анализатором возникли проблемы..
PM MAIL   Вверх
baldina
Дата 27.4.2015, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Neon111, 
Цитата(Neon111 @  25.4.2015,  10:44 Найти цитируемый пост)
как к ней написать лексический анализатор

"к ней", как все тут поняли, означает "её часть". 
в задании
Цитата

3.    Выполнить лексический анализ  написанной программы. (1 балл/0,5 балла : на занятии/дома)
4.    (*) Реализовать лексический анализатор на любом известном вам языке программирования для своего варианта задания. 

т.е. вам надо иное - создать лексический анализатор, который смог бы провести лексический анализ текста вашей программы.
когда вы выполните задание 3, вам станет понятно, какие лексемы должен распознавать искомый анализатор.
т.к. задание 4 - повышенной сложности для претендующих на высший балл, надо полагать задание 3 вы выполнили, но у вас появились вопросы по заданию 4.
покажите, что вы сделали по п.3 и что именно не получается в п.4
кстати, в задании В предлагается откомментировать программу простейшего анализатора (для чего нужно понять как она работает). вы сделали это?
PM MAIL   Вверх
Neon111
  Дата 28.4.2015, 06:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.12.2013

Репутация: нет
Всего: нет



Цитата(baldina @  27.4.2015,  21:50 Найти цитируемый пост)
кстати, в задании В предлагается откомментировать программу простейшего анализатора (для чего нужно понять как она работает). вы сделали это? 

 вот от комментирован лексический анализатор данный в задании В.
Код

#include <stdio.h>
#include <ctype.h>
# define NONE -1 // определение (не использовано)
# define NUM 256 // определение (не использовано)
main()
{
int lineno = 1; // инициализация переменной (номер строки)
int tokenval = 0; // инициализация переменной (накопительная величина)
int t; // инициализация переменной (текущий символ)
while(1) // начало цикла
{
t = getchar(); // ввод символа (с клавиатуры)
if (t == ' ' || t == '\t') ; // введен пробел или ТАБ ? (игнорируется)
else if (t == '\n') // иначе, введен ENTER?
lineno++; // номер строки увеличить на 1
else if (isdigit(t)) // иначе, введена цифра?
{ // ( да )
tokenval = t - '0'; // корректировка из символа в абс.значение
t = getchar(); // ввод символа
while(isdigit(t)) // пока символ - цифра
{ // ( цикл )
tokenval = tokenval * 10 + t - '0'; // корректировка: принятая цифра + прежняя сумма умн.на 10
t = getchar(); // ввод символа
}
ungetc(t, stdin); // - отправляет символ обратно в stdin
return t;
}
else // введена не цифра
{
tokenval = 0; // накопительная величина обнуляется
return t;
}
}
}
//---------------------------------------------------------------------------



То,что сделал по заданию 3 позже скину


Это сообщение отредактировал(а) Neon111 - 28.4.2015, 06:11
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.