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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
nelson1992
3 / 3 / 0
Регистрация: 21.10.2009
Сообщений: 77
#1

Распознавание ключевых слов. - C++

29.09.2011, 18:53. Просмотров 1297. Ответов 2
Метки нет (Все метки)

Помогите мне необходимо составить программу распознавания мнемоник ассемблерных команд. Входной файл содержит мнемоники команд (по одной в строке). Выходной файл – коды операций. Программа содержит упорядоченную таблицу структур (имя, код операции, шаблон распознавания).
Использовать бинарный поиск по таблице. В случае успеха поиска выводить код операции, иначе – сообщение об ошибке: текст строки, номер строки, место в строке. Команды ассемблера не зависят от регистра. Мнемоника может начинаться не с начала строки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.09.2011, 18:53     Распознавание ключевых слов.
Посмотрите здесь:

Cоздание таблицы ключевых слов и поиск в ней C++
Распознавание изображений C++
Запись в файл ключевых слов програмы C++
Правила произношения ключевых слов С++. C++
Распознавание кода C++
распознавание текста C++
C++ Распознавание текста
Выполнение инструкций после неактивных ключевых слов C++
Нижний дефис в ключевых словах C++
Шпаргалка ключевых слов C++
Построить бинарное дерево поиска получающееся в результате вставки ключевых слов C++
C++ Распознавание слов в аудиофайле. С чего начать?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DarthNamik
 Аватар для DarthNamik
2 / 2 / 0
Регистрация: 01.03.2010
Сообщений: 18
10.10.2011, 21:27     Распознавание ключевых слов. #2
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
using namespace std;
#define T 100
 
int main()
{
  // Обьявляем переменные
  FILE *in, *out;
  char **A = new char*[T];
  char **zap = new char*[T];
  int *cod = new int[T];
  int ret, i, n, j;
  int low, high, mid;
 
  // Открываем файли input.txt и output.txt
  in=fopen("1.txt","r");
  if(!in)
  {
    printf("File (1.txt) is not found!");
    getch();
    return 1;
  }
  else
  {
  out=fopen("2.txt","w");
  if(!out)
  {
    printf("File (2.txt) is not found!");
    getch();
    return 1;
  }
  else
  {
    // Заполняем таблицу операций
    A[0]="add";
    A[1]="and";
    A[2]="cop";
    A[3]="del";
    A[4]="dev";
    A[5]="mul";
    A[6]="or ";
    A[7]="ost";
    A[8]="sub";
    A[9]="xor";
    for(int i=0; i<10; i++)
      cod[i] = fabs(sin(i+1)) * 100;
 
    for(i=0; i<10; i++)
      printf("Identifier: %s has %d code.\n", A[i], cod[i]);
   printf("\n");
    n=0;
    i=0;
    while(!feof(in))
    {
      zap[i] = new char [100];
      fscanf(in,"%s ", zap[i]); // Считываем текст из файла
      i++;
      n++;
    }
    // Бинарный поиск
    for(i=0; i<n; i++)
    {
      low = 0;
      high = 9;
      ret = -1;
      while(low <= high) 
      {
        mid = low + (high - low) / 2; 
        if(strcmp(zap[i], A[mid]) < 0)
          high = mid - 1;
        else if(strcmp(zap[i], A[mid]) > 0)
          low = mid + 1;
        else
        {
          ret = mid;
          break;
        }
      }  
      if(ret < 0)
        fprintf(out,"1.txt(%d) : warning: '%s' : undeclared identifier\n", i+1, zap[i]);
      else
        fprintf(out,"1.txt(%d) : '%s' : identifier has a code : %d.\n", i+1, zap[i], cod[ret]);
      if(ret < 0)
        printf("1.txt(%d) : warning: '%s' : undeclared identifier\n", i+1, zap[i]);
      else
        printf("1.txt(%d) : '%s' : identifier has a code : %d.\n", i+1, zap[i], cod[ret]);
    }
    fclose(in);
    fclose(out);
    }
  }
  getch();
  return 0;
}
Входной файл 1.txt:
add
and
cop
del
dev
mul
or
ost
sub
xor
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
11.10.2011, 06:22     Распознавание ключевых слов. #3
Цитата Сообщение от DarthNamik
C++
1
A[0]="add";
это делается через strcpy()
ещё у тебя много new, но ни одного delete
Yandex
Объявления
11.10.2011, 06:22     Распознавание ключевых слов.
Ответ Создать тему
Опции темы

Текущее время: 10:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru