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

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

Войти
Регистрация
Восстановить пароль
 
ukrop-as
Сообщений: n/a
#1

Посчитать слова от А до Я. - C++

15.10.2009, 09:51. Просмотров 1015. Ответов 9
Метки нет (Все метки)

Задача: есть строка символов и надо узнать сколько есть слов в этой строке, которые начинаются с буквы "A" и заканчиваются "Я".

Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2009, 09:51     Посчитать слова от А до Я.
Посмотрите здесь:
C++ Посчитать слова
C++ Посчитать вхождение каждого слова в строку
Вывести слова текста в алфавитном порядке и посчитать их количество C++
C++ Найти в тексте и посчитать все слова с двойными согласными
Посчитать количество слов во введенной строке и найти слова, которые начинаются с буквы t C++
Записать в файл F слова. Прочитать данные из файла и найти слова из 5 букв C++
Написать программу добавления слова «hello» после первого слова введенной строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.10.2009, 10:40     Посчитать слова от А до Я. #2
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
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main()
{
    char *File="text.txt";
    string str;
    int countWord=0;
 
    setlocale(LC_ALL, "Russian");
 
    ifstream f(File);
    if (!(f.is_open()))  // проверка наличия файла с тестом
        cout<<"ERROR: not file "<<File;
    else
    {
        while(!f.eof()) // чтении из файла
        {   
            f>>str; /*cout<<" ";    cout<<(void *)str[0]<<" "<<(void *)str[str.length()-1]<<endl;*/
            // А и Я заглавные !!!
            if ((str[0]==0xFFFFFFC0/*'A'*/)&&(str[str.length()-1]==0xFFFFFFDF/*'Я'*/))
                ++countWord;
        }
        cout<<"\nWord: "<<countWord<<endl;
    }
    
    f.close();
    cout << endl;
    system("PAUSE");
    return 0;
}
ukrop-as
Сообщений: n/a
15.10.2009, 11:47     Посчитать слова от А до Я. #3
Ещё раз спасибо. Только появились пару вопросов...

1. а если текст не русский-какой нибуть другой(латинский шрифт)?
2. и буквы необязательно прописные(заглавные)?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.10.2009, 12:10     Посчитать слова от А до Я. #4
Цитата Сообщение от ukrop-as Посмотреть сообщение
Ещё раз спасибо.
1. а если текст не русский-какой нибуть другой(латинский шрифт)?
2. и буквы необязательно прописные(заглавные)?
ещё проще
C++
1
 if ((str[0]=='z')
или кодовое представление z,
для русских 'я' не катит, (покрайней мере у меня не прошло, пришлось кодовым представлением воспользоваться) кодировки так их раз так
по сути код какого символа напишешь такой и будет искать
Ketino
8 / 8 / 0
Регистрация: 21.09.2009
Сообщений: 84
15.10.2009, 12:20     Посчитать слова от А до Я. #5
Прошу обратить внимание, что по условиям задачи искать нужно не в файле и не по первому символу в строке.
А в ОДНОЙ строке нужно считать СЛОВА, т.е нужен "парсинг" одной строки.
Подразумевается, видимо, что слова - это то, что между пробелами, возможно группы пробелов.
Т.е. нужно подсчитать сколько в строке пар символов " a" и "z " между которыми нет пробелов
или "а" и "z ", если а - первый символ.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.10.2009, 13:01     Посчитать слова от А до Я. #6
Цитата Сообщение от Ketino Посмотреть сообщение
Прошу обратить внимание, что по условиям задачи искать нужно не в файле и не по первому символу в строке.
А в ОДНОЙ строке нужно считать СЛОВА, т.е нужен "парсинг" одной строки.
Подразумевается, видимо, что слова - это то, что между пробелами, возможно группы пробелов.
Т.е. нужно подсчитать сколько в строке пар символов " a" и "z " между которыми нет пробелов
или "а" и "z ", если а - первый символ.
Ketino, это ты кому?
если мне то я отвечу: нет никакой разницы как программа получит строку. Я человек сугубо ленивый и вбивать строку символов больше одного раза не собираюсь. Ктому же в условиях задачи не было ни слова что
искать нужно не в файле
.
и если, уважаемый Ketino, вы приглядитесь к коду. то увидите, что происходит анализ именно одного слова, а не начала строки. и кто вам сказал, что у меня в файле больше одной строки?
да и пары символов там А и Я. ну это так.

странное вообще сообщение, лучше бы свой вариант кода привели, того и глядишь понимание пришло бы и у вас и у меня
Ketino
8 / 8 / 0
Регистрация: 21.09.2009
Сообщений: 84
15.10.2009, 13:13     Посчитать слова от А до Я. #7
для Tant
Я пока ещё начинающий си-плюс-плюсник и по этой причине не могу пока быстро разобрать строку на слова элегантным и достойным публики способом.
Согласен, что про файл нет слов и что в файле может быть строка.
Но в предложенном варианте решения , если в файл записать строку "ТЫ кто? А-Я А-Я ", то результат будет нулевым , а по условиям задачи должен быть 2.
Или я плохо пригляделся к коду.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
15.10.2009, 13:31     Посчитать слова от А до Я. #8
Цитата Сообщение от Ketino Посмотреть сообщение
Я пока ещё начинающий си-плюс-плюсник
А я вообще инженер

Цитата Сообщение от Ketino Посмотреть сообщение
Но в предложенном варианте решения , если в файл записать строку "ТЫ кто? А-Я А-Я ", то результат будет нулевым , а по условиям задачи должен быть 2.
хм, у меня кажет именно 2. вы сами код собирали? и вводили именно ту строку что превели?

Цитата Сообщение от Ketino Посмотреть сообщение
Или я плохо пригляделся к коду.
именно, взять хотя бы что
C++
1
 f>>str;
сканирует "слово" и игнорирует пробелы и переход на новую строку, но это скорее всего отсутсвие опыта сказывается.

Мой вам совет не спешите с выводами, посторайтесь понять чужой код или решить задачу самостоятельно многое становиться понятно, когда сравниваешь два решения одной задачи. ошибки готов обсудить хоть свои, хоть чужие, я сюда не письками мериться пришёл, а по учиться.
Ketino
8 / 8 / 0
Регистрация: 21.09.2009
Сообщений: 84
15.10.2009, 13:52     Посчитать слова от А до Я. #9
Да, как оказалось - дело действительно в отсутвии опыта и в
C++
1
f>>str;
- я был не прав и предложенный вариант работает.
Но причем письки - так и непонял...
мой неэстэтичный вариант, если строка уже к нам как-то попала.
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
#include <iostream>
using namespace std;
 
int main()
{
int n,k=0;
std::string s;
s="   ababa gala maga a z az a-z   ";
while (true){
    
  while ( s[0]!= 'a'  ) {
    s=s.substr(s.find(" ")+1); 
    if (s.length()==0) break;
  }
  if (s.length()==0) break;
  n=s.find(" ");
  if (n==-1){
      if (s[s.length()-1]=='z')
          k++;
      s="";
  }
  else {
    if (s[n-1]=='z')
          k++;
    s=s.substr(n);
  }
}
cout<<"->"<<k<<endl;
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2009, 14:29     Посчитать слова от А до Я.
Еще ссылки по теме:
C++ Написать программу добавления слова «hello» после первого слова введенной строки
C++ В тексте слова разделены запятыми,напечатать все слова в алфавитном порядке.
Дан текст. Выделить из него слова не содержащие букв из последнего слова C++
C++ Дано предложение, где два слова различны. Найти эти слова
C++ Вывести слова в строке ДО слова, у которого одинаковые первая и последняя буквы

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

Или воспользуйтесь поиском по форуму:
Том Ардер
Модератор
Эксперт по математике/физике
3721 / 2334 / 290
Регистрация: 15.06.2009
Сообщений: 4,146
15.10.2009, 14:29     Посчитать слова от А до Я. #10
Цитата Сообщение от Ketino Посмотреть сообщение
разобрать строку на слова
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <strstrea>
.....
const int LEN = 10;
const int SIZE = 20;
char words[LEN][SIZE];
 
iststream text("word1 word2 word3");
 
for( int i = 0; i < LEN; i++ )
{
    text.get( &words[i][0], SIZE, ' ' );
    text >> ws;  // пропустить пробелы
 
    cout << "\n" << &words[i][0];
}
Yandex
Объявления
15.10.2009, 14:29     Посчитать слова от А до Я.
Ответ Создать тему
Опции темы

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