Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2013, 21:40   #1
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
Вопрос детерминированный конечный распознаватель

Это детерминированный конечный распознаватель для последовательности элементов типа «дата» в формате, удобном для сортировки (ГГГГ/ММ/ДД), разделенных точкой с запятой, при этом значение даты должно быть помещено в фигурные скобки, а год должен отображаться четырьмя символами, последовательность должна завершаться знаком «#», например, ({2001/12/01};{2005/07/03}#).
Код:
#include "stdafx.h"
#include "iostream.h"
#include "stdio.h"
#include "conio.h"

int main()
{ 	int i,j,kol,tsost,slsost,tsymb;
int tabl[23][15]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//da
					{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//net
					{1,1,1,1,1,1,1,1,1,1,3,1,1,1,1},//data
					{4,4,4,4,4,4,4,4,4,4,1,1,1,1,1},//god
					{5,5,5,5,5,5,5,5,5,5,1,1,1,1,1},//cg1
					{6,6,6,6,6,6,6,6,6,6,1,1,1,1,1},//cg2
					{7,7,7,7,7,7,7,7,7,7,1,1,1,1,1},//cg3
					{1,1,1,1,1,1,1,1,1,1,1,1,8,1,1},//cg4
					{9,10,1,1,1,1,1,1,1,1,1,1,1,1,1},//mes
				{1,11,13,11,12,11,12,11,12,11,1,1,1,1,1},//mes0
					{11,12,11,1,1,1,1,1,1,1,1,1,1,1,1},//mes1
					{1,1,1,1,1,1,1,1,1,1,1,1,14,1,1},//mesb
					{1,1,1,1,1,1,1,1,1,1,1,1,18,1,1},//mesm
					{1,1,1,1,1,1,1,1,1,1,1,1,21,1,1},//feb
					{15,15,15,17,1,1,1,1,1,1,1,1,1,1,1},//denb
				      {16,16,16,16,16,16,16,16,16,16,1,1,1,1,1},//db1
					{1,1,1,1,1,1,1,1,1,1,1,20,1,1,1},//db2
					{16,16,1,1,1,1,1,1,1,1,1,1,1,1,1},//cf1
					{15,15,15,19,1,1,1,1,1,1,1,1,1,1,1},//denm
					{16,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//cf0
					{1,1,1,1,1,1,1,1,1,1,1,1,1,2,0},//razd
					{15,15,22,1,1,1,1,1,1,1,1,1,1,1,1},//denf
					{16,16,16,16,16,16,16,16,1,1,1,1,1,1,1}//cf3
};
printf("matrica\n");
for (i=0;i<23;i++) {for (j=0;j<15;j++) printf("%4d",tabl[i][j]); printf("\n");};
  char   ch, inpstr[80] ;
  printf("\n ENTER STRING  ");
  i=0;
	 while ((ch=getch()) !=13 && i<80) 
		{putch(ch);
		inpstr[i++]=ch;}
	 inpstr[i]='\0';
	 kol=i-1;
	 printf("\n input string:");
	 printf(inpstr);
	 printf("\n");
     tsost=2;
     for (i=0;i<=kol;i=i+1) 
     {   tsymb=inpstr[i];
	     switch (tsymb)
	 { case '0':  slsost=tabl[tsost][0]; break;
	   case '1':  slsost=tabl[tsost][1]; break;
	   case '2':  slsost=tabl[tsost][2]; break;
	   case '3':  slsost=tabl[tsost][3]; break;
       case '4':  slsost=tabl[tsost][4]; break;
       case '5':  slsost=tabl[tsost][5]; break;
       case '6':  slsost=tabl[tsost][6]; break;
	   case '7':  slsost=tabl[tsost][7]; break;
	   case '8':  slsost=tabl[tsost][8]; break;
	   case '9':  slsost=tabl[tsost][9]; break;
	   case '{':  slsost=tabl[tsost][10]; break;
       case '}':  slsost=tabl[tsost][11]; break;
	   case '/':  slsost=tabl[tsost][12]; break;
	   case ';':  slsost=tabl[tsost][13]; break;
	   case '#':  slsost=tabl[tsost][14]; break;
	   default: slsost=1;}
   	   printf("%5d\n",slsost); 
          tsost=slsost;
     };
     switch (slsost) 
	 { case 1:cout<<"\n STRING is WRONG \n"; break;
	 case 0:cout<<"\n STRING is RIGHT \n";break;}
	return 0;
};
Где тут внести изменения чтобы получить(Если не трудно объяснить почему):
Детерминированный конечный распознаватель для последовательности элементов типа «дата» в немецком формате (ДД.ММ.ГГГГ), разделенных точкой с запятой, при этом значение даты должно быть помещено в фигурные скобки, а год должен отображаться четырьмя символами, например, ({01.12.2001};{05.07.2003}).
В С++ с 0 разбираюсь сам по учебникам... но тут не получается...
ELaX вне форума Ответить с цитированием
Старый 30.11.2013, 11:42   #2
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Люди неужели никто помочь с этим не в состоянии?
ELaX вне форума Ответить с цитированием
Старый 30.11.2013, 12:34   #3
ELaX
Пользователь
 
Регистрация: 24.11.2013
Сообщений: 29
По умолчанию

Эх код сделал программа работает как мне нужно... Посоветуйте литературу по этой теме. Я не понимаю как надо заполнять таблицу
Код:
int tabl[23][15]={{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},//da
					{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//net
					{1,1,1,1,1,1,1,1,1,1,3,1,1,1,1},//data
					{4,4,4,4,4,4,4,4,4,4,1,1,1,1,1},//god
					{5,5,5,5,5,5,5,5,5,5,1,1,1,1,1},//cg1
					{6,6,6,6,6,6,6,6,6,6,1,1,1,1,1},//cg2
					{7,7,7,7,7,7,7,7,7,7,1,1,1,1,1},//cg3
					{1,1,1,1,1,1,1,1,1,1,1,1,8,1,1},//cg4
					{9,10,1,1,1,1,1,1,1,1,1,1,1,1,1},//mes
				{1,11,13,11,12,11,12,11,12,11,1,1,1,1,1},//mes0
					{11,12,11,1,1,1,1,1,1,1,1,1,1,1,1},//mes1
					{1,1,1,1,1,1,1,1,1,1,1,1,14,1,1},//mesb
					{1,1,1,1,1,1,1,1,1,1,1,1,18,1,1},//mesm
					{1,1,1,1,1,1,1,1,1,1,1,1,21,1,1},//feb
					{15,15,15,17,1,1,1,1,1,1,1,1,1,1,1},//denb
				      {16,16,16,16,16,16,16,16,16,16,1,1,1,1,1},//db1
					{1,1,1,1,1,1,1,1,1,1,1,20,1,1,1},//db2
					{16,16,1,1,1,1,1,1,1,1,1,1,1,1,1},//cf1
					{15,15,15,19,1,1,1,1,1,1,1,1,1,1,1},//denm
					{16,1,1,1,1,1,1,1,1,1,1,1,1,1,1},//cf0
					{1,1,1,1,1,1,1,1,1,1,1,1,1,2,0},//razd
					{15,15,22,1,1,1,1,1,1,1,1,1,1,1,1},//denf
					{16,16,16,16,16,16,16,16,1,1,1,1,1,1,1}//cf3
};
Откуда цифры брать Как.... помогите советом где об этом почитать или обоснуйте)
ELaX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не пингуется конечный PC DEA7H Операционные системы общие вопросы 3 18.02.2013 23:43
Конечный автомат Rыся Помощь студентам 1 11.01.2013 10:56
Программа нисходящий распознаватель Nasty*90 Общие вопросы C/C++ 0 29.11.2011 13:55
Конечный поиск Munchkin Microsoft Office Excel 2 16.06.2011 12:13
Построить детерминированный конечный автомат Meru Общие вопросы Delphi 0 10.04.2011 15:57