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

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

Войти
Регистрация
Восстановить пароль
 
ukrop-as
#1

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

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

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

Благодарю.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2009, 09:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посчитать слова от А до Я. (C++):

Посчитать слова - C++
#include "stdafx.h" #include <iostream> #include <cctype> using namespace std; int xcount1(char*); int xcount2(int*); ...

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

Вывести слова текста в алфавитном порядке и посчитать их количество - C++
1. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран слова этого...

Найти в тексте и посчитать все слова с двойными согласными - C++
Пользователь вводит текст, необходимо посчитать количество и вывести слова с удвоенными согласными (например, аккомодация, add, читання) ...

Посчитать количество слов во введенной строке и найти слова, которые начинаются с буквы t - C++
Суть задания такова... 1-посчитать к-во слов во введенной строке. 2-Найти слова, которые начинаются с буквы t. 3-Тут главная проблема -...

Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова - C++
Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела....

9
TanT
эволюционирую потихоньку
466 / 464 / 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;
}
0
ukrop-as
15.10.2009, 11:47 #3
Ещё раз спасибо. Только появились пару вопросов...

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

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

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

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

Мой вам совет не спешите с выводами, посторайтесь понять чужой код или решить задачу самостоятельно многое становиться понятно, когда сравниваешь два решения одной задачи. ошибки готов обсудить хоть свои, хоть чужие, я сюда не письками мериться пришёл, а по учиться.
0
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;
}
0
Том Ардер
Модератор
Эксперт по математике/физике
3776 / 2389 / 304
Регистрация: 15.06.2009
Сообщений: 4,311
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];
}
0
15.10.2009, 14:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2009, 14:29
Привет! Вот еще темы с ответами:

Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву - C++
Дана последовательность содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами не менее...

Напечатать все слова, отличные от последнего слова строки, удалив из каждого слова первую и последнюю буквы - C++
Близиться сессия,а завтра мне сдавать 2 проги. Помогите ребят,могу даже 100 скинуть,если уж так трудно помочь. 8.Задан...

посчитать слова - C (СИ)
Привет всем! У меня такая задача, нужно посчитать сколько в файле содержится слов, я делаю банально - считаю пробелы, но нужно иметь...

посчитать слова - Pascal
помогите, пожалуйста, написать цикл для программы, считающей слова в строке, без использования стандартных функций как length и др... т.е....


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

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

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