1 / 1 / 0
Регистрация: 25.02.2015
Сообщений: 22
1

Программа подсчета символов и слов в минуту

05.04.2015, 22:07. Показов 1512. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь написать программу для подсчёта слов и символов в минуту
Но проблема в том , что не знаю как устроен таймер, как сделать так, чтоб после того как пользователь подтвердил готовность, начался отсчет времени (60 секунд) в это время он печатает строку, после истечения времени. Программа выводит сообщение "Время истекло" а после показывает количество слов и символов в минуту, счетчики работают, а вот с временем беда, помогите пожалуйста!
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <ctime>
#include <cstdlib>
 
using namespace std;
void Words()
{
    setlocale(LC_ALL, "Russian");
    char str1[9000];
    cout << "Вводите: ";
    cin.getline(str1,9000);
 
    int numberWords = 0;
    bool inWord = false;
    for(int i(0); str1[i]!='\0'; i++)
    {
        if(isalpha(str1[i])&& !(inWord))
        {
            numberWords++;
            inWord = true;
        }
        if(!isalpha(str1[i]))
            inWord = false;
 
    }
    cout << "Количество слов: " << numberWords << endl;
 
    int count = strlen(str1);
 
    cout << "Количество символов: " << count << endl;
}
 
int main()
{
   
    Words();
    system("pause");
 
    return 0;
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2015, 22:07
Ответы с готовыми решениями:

Программа подсчета строк, слов и символов не выводит результат
Читаю книгу по с++ и там есть пример такой задачи. Когда запускаю ее то она ничего не выводит. В...

Программа подсчёта количества символов, букв, слов и предожений
Нужно написать программу 1) Имя передаётся через командную строку 2) Программа должна...

Программа для подсчета символов и слов в тексте
Добрый вечер Я давно не занимался питоном, а тут мне попалось одно задание: В идеале мне нужно...

программа для подсчета, сколько N-символьных слов (число N вводится пользователем) содержится во введенной строке символов
нужна программа для подсчета, сколько N-символьных слов (число N вводится пользователем) содержится...

11
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
05.04.2015, 23:16 2
getline()-ом так не сделаешь. Пока пользователь ввод не закончит, программа будет ждать. Можно только измерить интервал времени с начала ввода и до нажатия Enter.
1
Заблокирован
06.04.2015, 00:09 3
Попробуйте что-то типа етого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//пример использования функции time
#include <iostream>
#include <ctime>
 
int main ()
{
  time_t seconds;
  seconds = time (NULL); // получить текущую дату, выраженную в секундах
  std::cout << "Количество часов, прошедших с 1 января 1970 года = "
            << seconds/3600 << std::endl;
 
  return 0;
}
1
1 / 1 / 0
Регистрация: 25.02.2015
Сообщений: 22
07.04.2015, 18:02  [ТС] 4
А как данный способ можно реализовать?
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
07.04.2015, 18:10 5
Какой способ?
0
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
07.04.2015, 21:04 6
Во всяких там ликунсах примерно так:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <chrono>
#include <string>
#include <thread>
#include <mutex>
#include <ncurses.h>
 
std::mutex mutex_;
std::string str_;
bool isComplete_ = false;
void writeThreadFunc()
{
    while (!isComplete_)
    {
        char ch = getch();
        std::unique_lock<std::mutex> lock(mutex_);
        if (!isComplete_)
        {
            str_.push_back(ch);
        }
        else
        {
            return;
        }
    }
}
 
int main()
{
    initscr();
 
    std::thread th1(&writeThreadFunc);
 
    {
        std::this_thread::sleep_for(std::chrono::seconds(60));
        std::unique_lock<std::mutex> lock(mutex_);
        isComplete_ = true;
 
        int numberWords = 1;
        for (auto ch : str_)
        {
            if (!std::isalpha(ch))
            {
                numberWords++;
            }
        }
        std::cout << "Количество слов: " << numberWords << std::endl;
        std::cout << "Количество Символов: " << str_.size() << std::endl;
    }
    th1.join();
 
    getch();
    endwin();
    return 0;
}
В винде также юзайте conio.h.
0
7784 / 6553 / 2982
Регистрация: 14.04.2014
Сообщений: 28,615
07.04.2015, 23:09 7
Всё равно одно нажатие нужно, чтобы программа прореагировала.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
08.04.2015, 05:21 8
Цитата Сообщение от JirniXU Посмотреть сообщение
Но проблема в том , что не знаю как устроен таймер, как сделать так, чтоб после того как пользователь подтвердил готовность, начался отсчет времени (60 секунд) в это время он печатает строку, после истечения времени. Программа выводит сообщение "Время истекло" а после показывает количество слов и символов в минуту, счетчики работают, а вот с временем беда, помогите пожалуйста!
Создать в каком ни будь Qt форму. На форму кинуть поле ввода. Через 60 секунд считать его содержимое и обработать. В данном случае это куда проще чем возиться с консолью.
2
1379 / 406 / 144
Регистрация: 22.10.2014
Сообщений: 872
08.04.2015, 12:19 9
Конечно лучше поюзать какой-то гуишник, в сегодняшнем мире яваскрипта мне кажется никто не будет в консоли использовать такое приложение.
А вопрос задавался скорее всего для обучения.
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
08.04.2015, 18:43 10
Цитата Сообщение от Nosey Посмотреть сообщение
Конечно лучше поюзать какой-то гуишник, в сегодняшнем мире яваскрипта мне кажется никто не будет в консоли использовать такое приложение.
Тут проблема не в использовании, а в том что стандартный потоковый ввод рассчитан по большей части на синхронную работу. А то что хочет ТС, это уже асинхронное чтение. Ну можно попробовать создать отдельный поток засыпающий на 60 секунд и потом пинающий cin.readsome, но вот есть ли какие либо гарантии что сработает - хз.
0
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
08.04.2015, 19:06 11
Возможно ли с помощью функции kbhit() запустить таймер, который отключится через минуту и выведет все результаты?
0
Заблокирован
20.05.2015, 00:51 12
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <ctime>
#include <cstdlib>
 
using namespace std;
void Words()
{
    setlocale(LC_ALL, "Russian");
    time_t seconds; time_t seconds1; 
    seconds = time (NULL);
    char str1[9000];
    cout << "Вводите: ";
    cin.getline(str1,9000);
 
    int numberWords = 0;
    bool inWord = false;
    for(int i(0); str1[i]!='\0'; i++)
    {
        seconds1 = time (NULL);
        if ((seconds1-seconds) > 60) break;
        if(isalpha(str1[i])&& !(inWord))
        {
            numberWords++;
            inWord = true;
        }
        if(!isalpha(str1[i]))
            inWord = false;
 
    }
    cout << "Количество слов: " << numberWords << endl;
 
    int count = strlen(str1);
 
    cout << "Количество символов: " << count << endl;
}
 
int main()
{
   
    Words();
    system("pause");
 
    return 0;
}
}
0
20.05.2015, 00:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2015, 00:51
Помогаю со студенческими работами здесь

Программа подсчёта слов
Требуется написать программу, которая будет считать количество слов в введённом тексте (желательно...

Программа подсчета символов
Программа должна была считать введенные символы и выводить их количество на экран. Но что-то пошло...

Программа подсчёта слов в тексте
Написал программу для подсчёта слов в тексте. работает , но возможно я где то перемудрил. (На...

Программа подсчета слов, база данна
#include &quot;stdafx.h&quot; #define YES 1 #define NO 0 main() /* count lines, words,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru