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

Хранение большого (15000) количества строк в строковом массиве - C++

Восстановить пароль Регистрация
 
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 14:45     Хранение большого (15000) количества строк в строковом массиве #1
Здравствуйте! Мне нужно создать генератор слов. Я решил пойти путем словаря + генератор псевдослучайных чисел.
Файл сделал вложением, т.к. символов слишком много для форума.
Прошу помочь.
Вложения
Тип файла: 7z masha_001.7z (41.6 Кб, 2 просмотров)
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
14.06.2014, 14:50     Хранение большого (15000) количества строк в строковом массиве #2
anwender95, Слова ? это что ?
осмысленные слова реальной жизни или просто непрерывная последовательность букв ?
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 14:54  [ТС]     Хранение большого (15000) количества строк в строковом массиве #3
Qazan, существительные русского языка.
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
14.06.2014, 15:42     Хранение большого (15000) количества строк в строковом массиве #4
anwender95, тогда может хранить лучше всего в графе все слова ?

причем в худшем случае (абсолютной забитости графа) у тебя будет степень ,каждой вершины 33
берешь и слуxайное значение по модулю 33 ;
при каждом переходе к букве ;

и получишь в конце случайное слово ;
Всего таких генераций случайных букв будет как длина слова .

Например ,
C++
1
2
3
4
5
  ч -> е -> л -> о -> в -> е -> к
          |
          \->  м -> о -> д -> а -> н
          |
          \ -> с -> н -> о -> к

и так далее
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 15:45  [ТС]     Хранение большого (15000) количества строк в строковом массиве #5
Qazan, можете немножко конкретизировать? А то я что-то не допонял.
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
14.06.2014, 15:47     Хранение большого (15000) количества строк в строковом массиве #6
Можно ,скорее всего еще как то слить одинаковые части у слов ,наподобие автоматов

но это уж надо как делать пометки когда остановиться



Например : кукуруза входит в (ку)http://www.cyberforum.ru/cgi-bin/latex.cgi?^{+} руза , но и входит кукукукукукукуруза тоже
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 15:50  [ТС]     Хранение большого (15000) количества строк в строковом массиве #7
А можно каким-либо другим способом просто хранить 15000 строк? Просто лень сливать части слов)
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
14.06.2014, 16:13     Хранение большого (15000) количества строк в строковом массиве #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я как то делал так , но это было в терминах файловой системы

т.е у меня каждая папка имела имя - буква алфавита

но сейчас,пока не могу представить как это хранить в памяти ,
походу придеться каждой вершине дать уникальное имя

Например ,номер уровня и букву

вот ,тогда можно хранить например в матрице смежностей

Добавлено через 3 минуты
anwender95, 15000 слов ,да можно конечно и не париться и хранить все в массиве из [char*]
генерировать случайное число %15000 и использовать

Если все завязано на канкретное число и компактность их хранения вам не важна

Добавлено через 7 минут
anwender95,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    
    const int n =  15000;
    char ** p = new char*[n];
    char * buf = new char["Размер слова максимальной длины "];
    std::ofstream fin("file.txt");
    for(int i = 0;i < n;i++)
    {
         fin >> buf;
         int m = strlen(buf);
         p[i] = new char[m + 1];
         for(int j = 0;j < m + 1;j++)
         {
            p[i][j] = buf[j];
         }
    }
    fin.close();
    std::cout << p[rand()%n] << '\n';
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
14.06.2014, 16:16     Хранение большого (15000) количества строк в строковом массиве #9
Цитата Сообщение от anwender95 Посмотреть сообщение
А можно каким-либо другим способом просто хранить 15000 строк? Просто лень сливать части слов)
std::vector<std::string>
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 16:17  [ТС]     Хранение большого (15000) количества строк в строковом массиве #10
Qazan, Вы смотрели прикрепленный файл? Я там делал через строковый массив. У меня 8 ошибок вылазит. И причина не известна. Текст был изначально: слово\nслово\n.... Я его переделал регекспами на "слово","слово",....
ошибки типа пропущенной }
C++
1
2
3
4
5
6
7
8
9
10
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(12) : error C2143: syntax error : missing '}' before ','
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(12) : error C2059: syntax error : 'string'
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(14) : error C2143: syntax error : missing ';' before '<<'
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(14) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(15) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(15) : warning C4273: '_getch' : inconsistent dll linkage
1>        c:\program files\microsoft visual studio 8\vc\include\conio.h(38) : see previous definition of '_getch'
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(16) : error C2059: syntax error : '}'
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(16) : error C2143: syntax error : missing ';' before '}'
1>c:\users\gregory\documents\visual studio 2005\projects\masha_001\masha_001\masha_001.cpp(16) : error C2059: syntax error : '}'
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 780
Записей в блоге: 10
14.06.2014, 16:26     Хранение большого (15000) количества строк в строковом массиве #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
//
int main(){
//  srand(time(0));
    char *words[]={"аарон","абажур","абакан","абалкин","абатуров","аббревиатура"};
    int i = (rand() % 10);
    cout << words[i];   
 
    system("pause");
    return 0;
}
Все работает ,ошибки возникают со словами котрых нет в тексте попробуйте
Ctrl+S нажать может поможет

Слова лучше в файле хранить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 16:33     Хранение большого (15000) количества строк в строковом массиве
Еще ссылки по теме:

Наследование static атрибута(хранение количества объектов наследуемых классов) C++
C++ Объединение строк в строковом классе
C++ Хранение большого количества бинарных данных

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

Или воспользуйтесь поиском по форуму:
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 16:33  [ТС]     Хранение большого (15000) количества строк в строковом массиве #12
Оказалось, что в файле были двойные запятые Видимо в изначальном файле такое было. Можно закрывать тему.
Yandex
Объявления
14.06.2014, 16:33     Хранение большого (15000) количества строк в строковом массиве
Ответ Создать тему
Опции темы

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