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

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

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

Подсчет слов, введенных с клавиатуры - C++

27.04.2013, 21:12. Просмотров 571. Ответов 6
Метки нет (Все метки)

Есть такая практическая задача, надо написать прогу, которая считает слова при вводе их с клавиатуры, притом в несколько строк и прекращать подсчет при встрече слова "done". Например такой ввод:

привет здаров как дела<enter>
нормально тыры пыры done<enter>
итого 7 слов

И это все надо без использования if else, до этой темы не дошел, с использование strcmp().
Ниже я пробовал что-то реализовать, думаю что задумка правильная, но из-за незнания механики что-то упускаю. Помогите плиз, а то уже часа 2-3 мозг кипит.

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
// strtype1.cpp -- using the C++ string class
#include <iostream>
#include <string>               // make string class available
#include <cstring>
#include <cstdlib>
#include "stdafx.h"
#include <array>
using namespace std;
 
int main()
{
    using namespace std;
    char ch;
    char qwe = 'done';
    int count = 0;
    int opa = 10;
    char joom[20][1] = {'q', 'w'};
    int result = 1;
    cout << "Vvedite slova\n";
    cin.get(ch);        // use the cin.get(ch) function
    while(result != 0){
        result = strcmp(joom[0], joom[1]);
    while (ch != ' ')
    {
        joom[count][0] = ch;
        cin.get(ch);    // use it again 
        ++count;
    };
    };
    cout << joom[0] << count << " characters read\n";
    system ("pause");
    return 0; 
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчет слов, введенных с клавиатуры (C++):

Подсчет количества введенных с клавиатуры чисел - C++
Реализовать ввод чисел с клавиатуры и подсчёт их длинны

Подсчет числа слов во введенных данных - C++
Приветствую. Имеется задание: напишите программу, которая должна вычислить, сколько раз каждое отдельное слово содержится во введенных...

Строка, введенная пользователем, состоит из слов, разделенных запятой. Подсчитать и вывести на экран количество введенных слов - C++
Задание: Строка, введенная пользователем, состоит из слов, разделенных запятой. Подсчитать и вывести на экран количество введенных слов. ...

Подсчет введенных символов - C++
Всем добрый день. Начал изучать С++ (чисто для себя) по книгде Г. Шилдта - &quot;С++ Руководство для начинающих&quot;, там в конце 4 модуля имеется...

Не работает подсчет суммы введенных чисел - C++
#include &lt;iostream&gt; using namespace std; int main() { std::cout &lt;&lt; 'Enter two numbers' &lt;&lt; std::endl; int v1, v2; std::cin &gt;&gt;...

Введение массива пользователем и подсчет введенных элементов - C++
Кто нибудь! Пожалуйста! Нужна помощь!! Как подсчитать количество элементов в произвольно введенном массиве не используя векторов и прочих...

6
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
27.04.2013, 21:25 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
    char *s =  new char[256];s[0]='a';
    int count = -1;
    while(strncmp(s, "done", 4) != 0) std::cin>>s, count++;
    std::cout<<count<<std::endl;
    delete []s;
1
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
28.04.2013, 16:15  [ТС] #3
Этот код работает, но я не могу понять почему. cin записывает в s по одному символу, увеличивая count, или всю строку сразу? По результату программы видно что читает строку до пробела, и прибавляет к count если не done, но по идее же все остальные слова в строке должны пропасть и только новый ввод после ентера должен записываться в s. Если не трудно то объясните плиз, а то эта тема посимвольной читки мне что-то трудно дается.
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
28.04.2013, 17:18 #4
Цитата Сообщение от faradej Посмотреть сообщение
cin записывает в s по одному символу
Нет, он читает до символа разделителя - пробела, переноса строки.
Цитата Сообщение от faradej Посмотреть сообщение
по идее же все остальные слова в строке должны пропасть
Почему? Ну, если образно, то, например, я ввел строку
aa bb cc
первый вызов >>s взял данные введенные с терминала до пробела (aa) и записал в переменную. Следующий вызов видит, что данные еще есть и записывает bb в s. Третий вызов тоже обнаруживает есть еще не обработанные данные в потоке и записывает cc в s. Следующий вызов >>s видит, что данных больше нема и дает пользователю снова их ввести.
1
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
28.04.2013, 17:50  [ТС] #5
Понятно. А почему используется указатель, а не обычный массив? Простой нельзя очистить для перезаписи или что?

Добавлено через 8 минут
Например это пример переделаный на string, работает без указателей
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int main()
{
    using namespace std;
    cout << "Vvedite slova\n";
    string s;
    string w = "done";
    int count = -1;
    while( s != "done") cin>> s, count++;
    std::cout<<count<<std::endl;
   //cout << joom[0] << count << " characters read\n";
    system ("pause");
    return 0; 
}
0
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
29.04.2013, 10:48 #6
Цитата Сообщение от faradej Посмотреть сообщение
А почему используется указатель, а не обычный массив?
"обычный массив" это и есть указатель.
Цитата Сообщение от faradej Посмотреть сообщение
Например это пример переделаный на string, работает без указателей
Ииии? Вариант "а просто мне так захотелось" тоже надо в расчет брать. Не вижу причин бегать от указателей, они не кусаются.
1
faradej
0 / 0 / 0
Регистрация: 25.04.2013
Сообщений: 67
02.05.2013, 21:56  [ТС] #7
Снова наткнулся на задачу с перебором символов . В этот раз надо подсчитать сколько слов начинается с гласных, согласный и сколько с остальных. Если ввожу только буквы, то все считается нормально, но если начинаю вводить символы и через пробел цифры, в разных комбинациях, то получается бред в результате подсчета. Объясните плиз что я не учел.

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
int main()
{
    using namespace std;
    cout << "vvedite slova: " << endl ;
    char *s =  new char[256];s[0]='a';
    int glasnaya = 0;
    int soglasnaya = 0;
    int other = 0;
    while(strncmp(s, "q", 4) != 0 ) 
    {
        cin >> s;
        if(isalpha(s[0]))
        {
            if(s[0] == 'a' || s[0] == 'e' || s[0] == 'i' || s[0] == 'o' ||s[0] == 'u' || s[0] == 'y')
            {
            glasnaya = glasnaya + 1;
            }
            else
            {
            soglasnaya = soglasnaya + 1;
            }
        }
        if(isspace(s[0])){break;}
        other = other + 1;
        
    }
    cout << "Kolichestvo glasnih bukv: " << glasnaya << endl;
    cout << "Kolichestvo soglasnih bukv: " << glasnaya << endl;
    cout << "Ostalnih simvolov: " << other << endl;
 
    cout << s;
    delete[]s;
    system ("pause");
    return 0; 
}
Добавлено через 41 минуту
Уже нашел в чем была проблема, спасибо
0
02.05.2013, 21:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2013, 21:56
Привет! Вот еще темы с ответами:

Решение уравнений введенных с клавиатуры - C++
Здравствуйте, всем доброго времени суток.У меня такой вопрос:&quot; Возможно ли использовать (в том числе решать) уравнение в программе (на...

Количество введенных слов - C++
Вот что я смог сделать с этим заданием. И еще if по книге я еще не проходил, но применил больше вариантов не нашел. #include &lt;iostream&gt; ...

Сложить n пар чисел, введенных с клавиатуры - C++
здравствуйте. задача состоит в том, чтобы сложить 12 пар чисел, которые идут столбцом через пробелы. числа нужно скопировать и вставить в...

Вычислить сумму чисел введенных с клавиатуры - C++
Всем, доброго времени суток дело вот в чём не могу посчитать n чисел введенных с клавиатуры и посчитать сумму в цикле. Например: сначала...


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

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

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