Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
freeflowmc
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 39
1

Генератор фраз

28.11.2014, 16:27. Просмотров 1139. Ответов 5
Метки нет (Все метки)

Суть задачи такова нужно ввести несколько слов через пробел,В первом поле существительные во втором глаголы в третьем фамилия или имя известного мыслителя,не могу реализовать рандом который наугад брал слова...Помогите у кого есть вохможность исходный код ниже...
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void clickMe();
    void textClear();
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
mainwindow.cpp
C++ (Qt)
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->pushButton, SIGNAL(clicked()),this,SLOT(clickMe()));
    connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(textClear()));
    connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(close()));
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::clickMe(){
    QString simbol = "©"    ;
    QString str1 = ui->lineEdit->text(); // существительное
    QString str2 = ui->lineEdit_2->text(); // глагол
    QString str3 = ui->lineEdit_3->text(); // Мыслитель
    QString finalStr = str1 + ' ' + str2 + ' '+ simbol + ' ' + str3;
    ui->textEdit->setText(QString(finalStr).arg(rand()%9+1)); // именно эту строку не могу правильно организвать
}
void MainWindow::textClear(){
 
    ui->textEdit->clear();
    ui->lineEdit->clear();
    ui->lineEdit_2->clear();
    ui->lineEdit_3->clear();
}
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2014, 16:27
Ответы с готовыми решениями:

Qt: Генератор отчетов...
Доброго времени суток, уважаемые форумчане! Нужен кросплатформенный...

Генератор печати под Qt
Добрый день,уважаемые форумчане. Поделитесь, пожалуйста, опытом в решении...

Генератор псевдослучайных чисел с графическим интерфейсом QT C++
Здравствуйте,я начинаю только работать в qt.Помогите пожалуйста сделать...

Генератор случайных фраз
Добрый день. Пишу умный дом. Он слушает команды и производит действия. Иногда...

Генератор случайных фраз
Здравствуйте, мне нужно написать программу, которая генерирует случайные...

5
alexey_rage
591 / 391 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
28.11.2014, 16:55 2
Цитата Сообщение от freeflowmc Посмотреть сообщение
QString(finalStr).arg(rand()%9+1)
Этот код прибавляет к строке число, которое выпало в рандоме.
А вы чего хотели добиться?
0
freeflowmc
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 39
28.11.2014, 17:08  [ТС] 3
мне нужно доибться того что бы из каждого поля рандомно бралось слово и выводилось в textEdit предложение из 3 слов
0
globalhost
32 / 24 / 7
Регистрация: 01.08.2014
Сообщений: 115
28.11.2014, 18:09 4
Лучший ответ Сообщение было отмечено freeflowmc как решение

Решение

Попробуйте так:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
QString str1 = ui->lineEdit->text();
QString str2 = ui->lineEdit->text();
QString str3 = ui->lineEdit->text();
 
QStringList strList1 = str1.split(" ");
QStringList strList2 = str2.split(" ");
QStringList strList3 = str3.split(" ");
 
QString finalStr = strList1.at(rand() % strList1.size()) + ' ' +
                   strList2.at(rand() % strList2.size()) + ' ' + simbol + ' ' +
                   strList3.at(rand() % strList3.size());
 
ui->textEdit->setText(finalStr);
Если слова разделены не пробелом, а другим символом, к примеру знаком доллара, то используйте "str.split("$");".
1
freeflowmc
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 39
28.11.2014, 20:23  [ТС] 5
Спасибо большое действительно помогло, у меня к Вам вопрос,я по докоментации ползал но такого не нашёл не могли бы вы подсказать источники
0
globalhost
32 / 24 / 7
Регистрация: 01.08.2014
Сообщений: 115
29.11.2014, 05:50 6
Для операций со строками в Qt используются классы QString и QStringList.
Описание этих классов и примеры доступны на сайте Qt:

http://qt-project.org/doc/qt-5/qstring.html
http://qt-project.org/doc/qt-5/qstringlist.html

Добавлено через 9 минут
После того, как исходная строка разбита на составляющие, зная размер списка, несложно догадаться, как получить случайную строку через индекс.
1
29.11.2014, 05:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2014, 05:50

Как работает генератор случайных чисел при создании фраз из слов?
Подскажите как сделать такой код,который-бы генерировал случайные числа и при...

Оптимизировать алгоритм поиска двух одинаковых фраз, в массиве фраз
Всем привет! Может кто подскажет, как оптимизировать алгоритм поиска 2-х...

Yii2 перевод фраз
Есть ли способ облегчающий переводы? Например если есть куча модулей и куча...


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

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

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