Форум программистов, компьютерный форум, киберфорум
Наши страницы

Сохранение всех входящих лексем(строк) в порядке поступления - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Комментарии к Системе счисления http://www.cyberforum.ru/cpp-beginners/thread17274.html
Кто может напишите комментарии к проге,просто по отдельности нет смысла спрашивать потому что очень много что не понятна! Из 2-ой в 10-ую и обратно #include<iostream.h> #include<math.h>...
C++ Вывести на экран все слова, встречающиеся более 1 раза Помогите пожалуйста, запуталась в циклах!!! (( Сама задача такова:Дана строка в ней не более 30 слов, в каждом слове не более 8 букв. Слова отделены запятыми, за последним - точка. Вывести на экран... http://www.cyberforum.ru/cpp-beginners/thread17270.html
Работа с файлами. Редактирование файла C++
Задачка такая... переписать содержимое файла А в файл Б, удалив однобуквенные слова и пробелы.. #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <conio.h> #include <locale> int main()...
C++ Дан текстовый файл F. Найти, сколько раз встречается в нем слово S
Просто без выходная ситуация надо решить задачи... Просто умоляю кто нибудь ПАМАГИТЕ!!!!!!!!!!!!:help::help::help: 1)Дан файл F, содержащий сведения о кубиках: размер (длина его ребра), его цвет и...
C++ Программирование массива указателей http://www.cyberforum.ru/cpp-beginners/thread17248.html
Подскажите, в чем различие выделения памяти для массива указателей char **term;: term = (char **)malloc(10); и *term = (char *)malloc(10); И как правильно удалить память для второго случая, если...
C++ Вопрос от нуба) std::cout << "Hello World!\n"; return 0; } я поробывал ее написать в Борланде 6 (так как диск с книгой не удолось запустить) чето нечего не вышло( патом поставил Вижуал студию 6 там узнал что они... подробнее

Показать сообщение отдельно
=TrappeR=
4 / 4 / 1
Регистрация: 02.12.2008
Сообщений: 11

Сохранение всех входящих лексем(строк) в порядке поступления - C++

03.12.2008, 16:18. Просмотров 1135. Ответов 5
Метки (Все метки)

Уже ни первый день бьюсь над ошибкой в подпрограмме транслятора?
Цель подпрограммы: сохранение всех входящих лексем(строк) в порядке поступления.
Описание: в динамическом массиве сохраняются только ранее неизвестные лексем. А порядок поступления обеспечивает массив указателей, ссылаясь на динамический массив.
Реализация:
Код
struct entry {
    char importance[31];
};

struct entry *symtable =            /* Таблица символов. */
    (struct entry *)malloc(100);
char **term = (char **)malloc(999); /* Массив указателей */
int lastentry = 0;                  /* Последняя использованная
                                       позиция в таблице символов.  */
int lastterm = 0;                   /* Последняя введенная лексема. */

int Table::lookup(const char *s)
{   /* поиск строки s среди лексем в порядке последнего вхождения */
    for (int i = lastentry; i >= 0; i--)
        if (strcmp(symtable[i].importance, s) == 0)
            return i;
    return 0;
}

void insert(const char *s)
{	/* сохранение входящих лексем в порядке поступления. */
    lastentry++;
    lastterm++;
    int buf = lookup(s);
    if  (buf == 0) {
        /* сохраним лексему в динамическом массиве: */
        strcpy(symtable[lastentry].importance, s); */
        /* сохраним позицию лексемы во входном потоке */
        term[lastterm] = symtable[lastentry].importance;  // !!!возможна ошибка
    } else {  /* лексема уже встречалась */
        /* сохраним только позицию лексемы во входном потоке */
        term[lastterm] = symtable[buf].importance;  // !!!возможна ошибка!!!
    }
}

int getterm(char *s, int index)
{	/* присвоение строке s лексемы по индексу index */
    if (index >= 0 && index <= lastterm) {
        strcpy(s, term[index]);	// !!!ошибка возврата index==2 значения!!!
    return 1;
    }
    return 0;
}

Ошибка состоит в неправильном выводе именно третьего сохраненного значения, к примеру ввожу лексему “int” выводит каракули. Все предыдущие и последующие значения выводятся правильно!
Заранее благодарен. :drink:
Добавлено через 19 часов 42 минуты 54 секунды
Добавляю: ошибка состоит в неправильном выводе именно третьего сохраненного значения, к примеру ввожу лексему “int” выводит каракули. Все предыдущие и последующие значения выводятся правильно!
Заранее благодарен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru