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

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

Войти
Регистрация
Восстановить пароль
 
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
#1

Текстовый рандом, не могу выбрать лучший способ - C++

25.08.2013, 20:46. Просмотров 890. Ответов 12
Метки нет (Все метки)

Добрый день, уважаемые программисты.

Вот возник какой вопрос. Мне нужен текстовый рандом, консольный для начала.
По скольку с подключением БД у меня большая беда, я решила обойти этот момент и попробовать что-то другое.

например, можно было бы сразу сделать массивчик с текстом, и при выпадении рандомного числа -- вызываем ячейку. но возникла проблема с большим объёмом текста, т.е., массив получается длинной, длинной полоской. Хотелось бы сделать это лучше.

какие могут быть варианты?

Файл? Хорошо, а как хранить тогда там? построчно? Тогда делать вектор или массив динамический? У динамического потом придётся ещё отслеживать длину, ладно, это вроде бы легко.

Есть ещё варианты?


желательно, чем проще, тем лучше. Спасибо!

Добавлено через 1 минуту
****

А, и вот ещё вопрос.

Если бы текстовый рандом был их нескольких составляющих, и он бы использовал БД, то какая нужна БД? Например, у меня есть 10 имён, 10 фамилий и 10 отчеств. Нужно 3 таблицы в БД или 1 таблицу и 3 колонки в ней? Потому что суть задачи в том, что должно быть не 10 ФИО, а 1000 ФИО.

Добавлено через 6 часов 4 минуты
???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2013, 20:46     Текстовый рандом, не могу выбрать лучший способ
Посмотрите здесь:

Дать выбрать пользователю способ ввода данных в массив - C++
Дать выбрать пользователю способ ввода данных в массив (ручной или случайный автоматический) и создать массив согласно выбранному условию ...

Какой способ хранения матрицы выбрать, если требуется делать много перестановок элементов? - C++
Здравствуйте! У меня было задание, написать такую программу, которой надо сделать циклический сдвиг в двумерном динамическом массиве по...

Не могу выбрать между C++ и C# - C++
Доброго времени суток! Я учусь на первом курсе программной инженерии. Раньше я программировал на Delphi и не достиг в них никаких успехов,...

Не могу выбрать minGW - C++
Я установил где-то 5 разных видов minGW(конечно, удалял старое перед установкой нового) Мне сказали отсюда качать: ...

Вывод в текстовый файл, не могу доработать (код + пояснения) - C++
Собственно задание - Создать класс для вычисления значения функции y=aSin(x+b), на произвольном интервале с произвольным шагом, результат...

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

Рандом - C++
Как проще всего рандомно разыграть для переменной значение 1 или 0....?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
25.08.2013, 20:59     Текстовый рандом, не могу выбрать лучший способ #2
Цитата Сообщение от Nullik Посмотреть сообщение
Тогда делать вектор или массив динамический?
в c++ уже готовый вектор есть std::vector<>

Не по теме:

а если честно, то вообще непонятно что надо сделать

Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
25.08.2013, 21:03     Текстовый рандом, не могу выбрать лучший способ #3
Цитата Сообщение от Nullik Посмотреть сообщение
А, и вот ещё вопрос.
Если бы текстовый рандом был их нескольких составляющих, и он бы использовал БД, то какая нужна БД? Например, у меня есть 10 имён, 10 фамилий и 10 отчеств. Нужно 3 таблицы в БД или 1 таблицу и 3 колонки в ней? Потому что суть задачи в том, что должно быть не 10 ФИО, а 1000 ФИО.
1 база, с 1-ной таблицей, и с разными полями.
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
25.08.2013, 21:33  [ТС]     Текстовый рандом, не могу выбрать лучший способ #4
Цитата Сообщение от BigLow Посмотреть сообщение
в c++ уже готовый вектор есть std::vector<>

Не по теме:

а если честно, то вообще непонятно что надо сделать

да я знаю что такое вектор и массив, просто если делать массив, то прописывая его элементы получается длинная строка.

например, мне надо сделать массив из элементов:

а сейчас будет птичка 1
а сейчас будет птичка 2
.... с 3 по 999 ....
а сейчас будет птичка 1000

-- и мне это перечислять в массиве?

Можно ли это как-то сократить, именно записи в массиве -- да, например, чтением через файл, а ещё как-нибудь?

А можно ли записать в массиве по построчно, или только в одну строчку?

пытаюсь сделать текстовый рандом но не понимаю, как это можно сделать лучше в качестве кода.
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
25.08.2013, 21:38     Текстовый рандом, не могу выбрать лучший способ #5
Цитата Сообщение от Nullik Посмотреть сообщение
да я знаю что такое вектор и массив, просто если делать массив, то прописывая его элементы получается длинная строка.

например, мне надо сделать массив из элементов:

а сейчас будет птичка 1
а сейчас будет птичка 2
.... с 3 по 999 ....
а сейчас будет птичка 1000

-- и мне это перечислять в массиве?

Можно ли это как-то сократить, именно записи в массиве -- да, например, чтением через файл, а ещё как-нибудь?

А можно ли записать в массиве по построчно, или только в одну строчку?

пытаюсь сделать текстовый рандом но не понимаю, как это можно сделать лучше в качестве кода.
Что рандомно будет браться? В указанном случае
C++
1
std::string result = "а сейчас будет птичка "+ std::to_string(rand()%1000+1);
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
26.08.2013, 08:43  [ТС]     Текстовый рандом, не могу выбрать лучший способ #6
Любая из строчек с птичкой.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
26.08.2013, 09:39     Текстовый рандом, не могу выбрать лучший способ #7
Цитата Сообщение от Bend3r Посмотреть сообщение
1 база, с 1-ной таблицей, и с разными полями.
Зависит от цели: если, к примеру, у нас задача просто сохранить фио десяти человек, тогда пойдет и одна таблица. Но если это будет какой-то список различных имен, фамилий и отчеств, тогда три - ведь может же быть несколько человек с разными именами, но одинаковой фамилией, или отчеством. Неполный тезки.

Поясните пожалуйста вот этот вот термин:
Цитата Сообщение от Nullik Посмотреть сообщение
текстовый рандом
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
26.08.2013, 10:12  [ТС]     Текстовый рандом, не могу выбрать лучший способ #8
ну, в смысле, суть программы такая:

есть например массив с каким-то длинным текстом в каждой ячейке.
И мне нужно, чтобы эта ячейка рандомно выпадала. т.е., допустим у нас есть заготовка фразы: "В прошлом тебя звали " и варианты: Петя, Даша, Глаша, Дуб. Вот, чтобы это был рандом из 4 элементов к готовому шаблону.ъИ, естественно, рандом будет в числах (номера ячеек).

Но предположим такую ситуацию, что мне нужно хранить больше, чем 4 элемента. И длина этих элементов 200-250 символов в каждом. Как мне лучше всего хранить данные? Есть вариант проще\лучше, чтобы не использовать использовать БД и чтобы не писать в одну строчку в массиве?

Про БД.

Допустим, у меня есть 3 имени, 3 фамили и 3 отчества, например: Даша, Маша, Глаша. Синичкина, Лисичкина, Сестричкина. Петровна, Ивановна, Фёдоровна.

Сколько всего может быть различных комбинаций? -- 27.
Так вот, но хранить же надо всего 9, причём 3 элемента в 3 группах.

так как мне это хранить в БД? 1 таблица и 3 колонки или 3 таблицы с 1 колонкой?

И ещё -- связь между этими таблицами надо устанавливать в БД? или они будут как отдельные?
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,665
26.08.2013, 15:42     Текстовый рандом, не могу выбрать лучший способ #9
Структура
Имя
Фамилия
Отчество

Массив структур
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,496
Завершенные тесты: 1
26.08.2013, 16:05     Текстовый рандом, не могу выбрать лучший способ #10
daslex,
Цитата Сообщение от Nullik Посмотреть сообщение
но хранить же надо всего 9, причём 3 элемента в 3 группах
Тогда уж три массива и все. Но ТС хочет рассмотреть еще какие-либо варианты.

Цитата Сообщение от Nullik Посмотреть сообщение
так как мне это хранить в БД? 1 таблица и 3 колонки или 3 таблицы с 1 колонкой?
Лучше три таблицы с одной колонкой. Связь - многие ко многим.

Цитата Сообщение от Nullik Посмотреть сообщение
И ещё -- связь между этими таблицами надо устанавливать в БД? или они будут как отдельные?
А каким образом вы планируете устанавливать связь? Какая субд? Не Microsoft Access ли?
san92der
14 / 14 / 3
Регистрация: 27.10.2012
Сообщений: 108
26.08.2013, 17:37     Текстовый рандом, не могу выбрать лучший способ #11
Можно попробовать вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
int main(int argc,char** argv) {
 
    string line;
    vector<string> lines;
    ifstream file("MyFile.txt");
   
    
    while (getline(file, line)) {
            lines.push_back(line);
    }
 
           file.close();
    cout<<lines[rand()%lines.size()];
 
    system ("pause");
}
Создаешь вектор строк, на каждую строку вектора - строка файла. Потом через рандом и размер вектора можешь взять случайную строку файла.. Как-то так)
Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 300
Завершенные тесты: 1
26.08.2013, 18:02  [ТС]     Текстовый рандом, не могу выбрать лучший способ #12
SatanaXIII

Но ТС хочет рассмотреть еще какие-либо варианты.
всё верно -- рассмотреть варианты "какими можно", а там уже сделать "каким возможно".
Сейчас склоняюсь в сторону: бацаю файлик txt, из него буду построчно считывать "элементы массива". Создаю динамические: массив и рандом_число. Т.е., если я вдруг что-то изменю в файле, в самой программе это не изменится.

В этом случае я 100% смогу сделать ехе. Я не знаю как файлы подключать в виндовс форм.
Как?
Не Microsoft Access ли?
ага


san92der , пока дошла до Вашего поста (он на др. странице), уже напсиала примерно такой же алгоритм в словах. Спасибо!)))

подскажите -- как файл подключить в форме? Где это подключение прописывать надо?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 18:12     Текстовый рандом, не могу выбрать лучший способ
Еще ссылки по теме:

рандом - C++
подскажите что не так #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; using namespace std; int main() ...

Рандом rand - C++
Решаю задачу из одной книги, так там нужно чтоб пользователю выбивало число (номер счета), не обязательно рандомное, но я решил что лучше...

Не повторяющий рандом - C++
Переменная rnd генерирует числа от 1 до 5 Как сделать, чтобы при выводе в консоли цифры не повторялись?

Структура и рандом. - C++
у меня в структуре есть пять типов данных struct Dzho { int pid; double burst; int priority; int working; int waiting; ...

Рандом растет - C++
srand(time(0)); int j=rand()%1000; char s=&quot;afasfa&quot;; switch (message) /* handle the messages */ ...


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

Или воспользуйтесь поиском по форуму:
san92der
14 / 14 / 3
Регистрация: 27.10.2012
Сообщений: 108
26.08.2013, 18:12     Текстовый рандом, не могу выбрать лучший способ #13
Обновленный комментариями код. Все, что нужно для работы с файлом тут уже есть:
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
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
int main(int argc,char** argv) {
 
    string line;
    vector<string> lines;
    ifstream file("MyFile.txt");//создается поток типа ifstream, т.е. файл можно только прочитать
                                      //и открываем файл
   
    
    while (getline(file, line)) { //функция getline() будет построчно считывать по одной строке из файла
            lines.push_back(line);//и каждую новую строку помешать в вектор
    }
 
    file.close();//закрытие файла
    cout<<lines[rand()%lines.size()];
 
    system ("pause");
}
Про файловые потоки можно почитать тут: http://programmersclub.ru/34/
Yandex
Объявления
26.08.2013, 18:12     Текстовый рандом, не могу выбрать лучший способ
Ответ Создать тему
Опции темы

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