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

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

Войти
Регистрация
Восстановить пароль
 
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
#1

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

14.06.2014, 14:45. Просмотров 444. Ответов 11
Метки нет (Все метки)

Здравствуйте! Мне нужно создать генератор слов. Я решил пойти путем словаря + генератор псевдослучайных чисел.
Файл сделал вложением, т.к. символов слишком много для форума.
Прошу помочь.
0
Вложения
Тип файла: 7z masha_001.7z (41.6 Кб, 2 просмотров)
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2014, 14:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Хранение большого (15000) количества строк в строковом массиве (C++):

Хранение большого количества однотипных данных - C++
Добрый день. Подскажите, каким образом хранить данные для программы? Например, у меня имеется 1000 - 300 000 строковых данных, которые...

Хранение большого количества бинарных данных - C++
Возник вопрос связаный с хранением данных: Мне нужно сохранять массивы бинарных данных (каждый массив - 4096 элементов по 1 байту) Если...

Увеличение количества строк в двумерном динамическом массиве - C++
Здравствуйте. Есть двумерный динамический массив строк ownerbase. После выполнения определенных условий нужно занести в него еще одну...

Алгоритм Поиска в Строковом Массиве - C++
Нужен самый простой как дуб, алгоритм чтобы находить нужную строку в массиве. Помогите если кто сталкивался с этим делом. :scratch: Да,...

Объединение строк в строковом классе - C++
Добавить в строковый класс функцию, которая создает строку, содержащую общие символы для двух строк, перегружается оператор * ...

В строковом массиве храняться фамилии и инициалы учеников класса. - C++
В строковом массиве храняться фамилии и инициалы учеников класса.Требуется напечатать список класса с указанием для каждого ученика...

11
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
14.06.2014, 14:50 #2
anwender95, Слова ? это что ?
осмысленные слова реальной жизни или просто непрерывная последовательность букв ?
0
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 14:54  [ТС] #3
Qazan, существительные русского языка.
0
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
14.06.2014, 15:42 #4
anwender95, тогда может хранить лучше всего в графе все слова ?

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

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

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

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

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



Например : кукуруза входит в (ку)http://www.cyberforum.ru/cgi-bin/latex.cgi?^{+} руза , но и входит кукукукукукукуруза тоже
0
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 15:50  [ТС] #7
А можно каким-либо другим способом просто хранить 15000 строк? Просто лень сливать части слов)
0
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
14.06.2014, 16:13 #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';
1
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
14.06.2014, 16:16 #9
Цитата Сообщение от anwender95 Посмотреть сообщение
А можно каким-либо другим способом просто хранить 15000 строк? Просто лень сливать части слов)
std::vector<std::string>
0
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 16:17  [ТС] #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 : '}'
0
Qazan
211 / 59 / 9
Регистрация: 30.04.2013
Сообщений: 798
Записей в блоге: 10
14.06.2014, 16:26 #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 нажать может поможет

Слова лучше в файле хранить
0
anwender95
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 10
14.06.2014, 16:33  [ТС] #12
Оказалось, что в файле были двойные запятые Видимо в изначальном файле такое было. Можно закрывать тему.
0
14.06.2014, 16:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2014, 16:33
Привет! Вот еще темы с ответами:

как осуществить в строковом массиве поиск именно слова(!), а не..... - C++
как осуществить в строковом массиве поиск именно слова(!), а не части слова. Допустим, есть строка: &quot;this is horosho&quot; Если я использую...

Функция проверки большого количества переменных - C++
Нужна помощь в написании функции, которая проверяла бы введенные пользователем переменные, т.к.переменных много, а писать цикл для каждого...

Генерация большого количества случайных чисел - C++
Подскажите, пожалуйста, как можно ускорить процесс генерации нескольких сотен миллионов чисел? В цикле это занимает много времени, есть...

Stack overflow при создании большого количества объектов - C++
Здравствуйте Товарищи! Выскакивает ошибка:&quot;Необработанное исключение в &quot;0x000000013fbc1ba7&quot; в &quot;Динамический массив (malloc).exe&quot;:...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.