Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Gans5
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 9
#1

Найти количество слов, начинающихся с заданной буквы С.

17.10.2010, 12:13. Просмотров 1985. Ответов 9
Метки нет (Все метки)

Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелы внутри себя, будем называть словами. Найти количество слов, начинающихся с заданной буквы С.


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
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include<windows.h>
 
        ostream& operator<<(ostream&out,const char*str)
        {
        char s[256];
        CharToOem(str,s);
        for(int i=0;s[i]!=0;i++)
            out<<s[i];
        return out;
        }
 
//---------------------------------------------------------------------------
 
void main()
{
char s[1000];
 
  cout << "Введите строку: ";
  gets(s);
  int a,i,b;
a=0;
b=0;
for (i=0;i<strlen(s)-1;i++)
 if ((s[i]==' ') && (s[i+1]!=' '))
  a=a+1;
if (s[0]!=' ')
    a=a+1;
cout<<"В веденной строке "<<a<<" слов"<<endl;
getch();
}

Что дальше делать, какое условие надо поставить что бы находились все слова начинаюшиеся на заданую букву "С"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 12:13
Ответы с готовыми решениями:

Найти количество слов, начинающихся с заданной буквы
Помогите пожалуйста составить программу в С++. Обработка символьных строк....

Определить количество слов, начинающихся с заданной буквы
Здрасьте, помогите, пожалуйста, решить эту задачу. Задача: В заданной строке,...

В заданной последовательности определить количество слов, начинающихся с указанной буквы
7.Дана непустая последовательность непустых слов из латынских букв; соседние...

Найти количество слов, начинающихся с буквы b
Дана строка, содержащая английский текст. Найти количество слов, начинающихся с...

Найти количество слов, начинающихся с буквы b
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() {...

9
.::.DIMA.::.
143 / 143 / 32
Регистрация: 26.10.2008
Сообщений: 782
17.10.2010, 12:30 #2
Воспользуйтесь функцией strtok.
0
Driver_09
15 / 15 / 1
Регистрация: 03.05.2010
Сообщений: 158
17.10.2010, 12:34 #3
ну саму программу не смотрел на правильность, да и не это важно.
Я думаю нужно написать нечто подобное:
C++
1
2
3
for (i=0; i<s; i++)
 if(s[0]=='C')
  ...
То есть насчёт s я не уверен. но условие думаю должно быть таким.
Многоточие - это я имел в виду вывод на экран
0
easybudda
Модератор
Эксперт CЭксперт С++
10029 / 5953 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
17.10.2010, 12:55 #4
Gans5, для английских букв
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string.h>
#include <ctype.h>
 
int count_a(const char * s, char c){
  char * buf, * p;
  int cnt;
 
  if ( ( buf = strdup(s) ) == NULL )
    return -1;
  c = toupper(c);
  cnt = 0;
  for ( p = strtok(buf, " "); p; p = strtok(NULL, " ") )
   if ( toupper(*p) == c )
      ++cnt;
  free(buf);
  return cnt;
0
Gans5
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 9
25.10.2010, 20:51  [ТС] #5
Цитата Сообщение от easybudda Посмотреть сообщение
Gans5, для английских букв
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string.h>
#include <ctype.h>
 
int count_a(const char * s, char c){
  char * buf, * p;
  int cnt;
 
  if ( ( buf = strdup(s) ) == NULL )
    return -1;
  c = toupper(c);
  cnt = 0;
  for ( p = strtok(buf, " "); p; p = strtok(NULL, " ") )
   if ( toupper(*p) == c )
      ++cnt;
  free(buf);
  return cnt;

Что-то она у меня не запускается

...

Я до сих пор не могу сделать эту программу, strtok не понял как работает и как её использовать
0
NiTan
Покинул форум
3163 / 1347 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
25.10.2010, 21:03 #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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 #include <iostream.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
 
char st[1000];
cout<<"Vvedite stroku: ";
cin>>st;
      int count;
 for(int i=0;i<strlen(st);i++)
 {
  if( (st[i]==' ') && (st[i]=='C') || ( (i==0) && (st[i]=='C')))count++;
 }
 
 cout<<"\nKolichestvo slov s C"<<count<<endl;
 system("pause");
        return 0;
}
//---------------------------------------------------------------------------
0
Unforgiven_00
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
25.10.2010, 22:12 #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
#include <iostream> 
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    ifstream in("file.txt");
    vector<string> v;
    while(!in.eof())
    {
        string tmp;
        in >> tmp;
        v.push_back(tmp);
    }
    int count = 0;
    for(unsigned i=0; i<v.size(); i++)
        if(v[i][0] == 'c' || v[i][0] == 'C')
            count++;
    cout << count << endl;
    system("pause");
    return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
10029 / 5953 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
25.10.2010, 23:26 #8
Цитата Сообщение от Папа Карло Посмотреть сообщение
if( (st[i]==' ') && (st[i]=='C')...
Так чему эта st[i] должна ровняться-то? Такое условие никогда не выполнится.
0
крольчиха
1 / 1 / 0
Регистрация: 21.01.2010
Сообщений: 19
26.10.2010, 14:22 #9
if( (st[i]==' ') && (st[i+1]=='C')..так наверно правильней
0
Gans5
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 9
26.10.2010, 21:06  [ТС] #10
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main()
{
    ifstream in("file.txt");
    vector<string> v;
    while(!in.eof())
    {
        string tmp;
        in >> tmp;
        v.push_back(tmp);
    }
    int count = 0;
    for(unsigned i=0; i<v.size(); i++)
        if(v[i][0] == 'c' || v[i][0] == 'C')
            count++;
    cout << count << endl;
    system("pause");
    return 0;
}
Я создал файл "file.txt" пишу туда текст по заданию например "Привет как дела саша слышь слушаю тебя"

Выводит 0
хотя должно быть 3



Добавлено через 7 минут
Цитата Сообщение от easybudda Посмотреть сообщение
Так чему эта st[i] должна ровняться-то? Такое условие никогда не выполнится.
Цитата Сообщение от крольчиха Посмотреть сообщение
if( (st[i]==' ') && (st[i+1]=='C')..так наверно правильней

Чет вроде не так и не так не работает, показывает постоянно "1"

Добавлено через 12 минут
Че может попробуем ещё как нибуть ещё?


Как можно строку разбить на слова и каждое слово занести в массив ("шла саша по шоссе и сосала сушку" - "шла", "саша", "по", "шоссе", "и", "сосала", "сушку"), а потом проверить каждое слово начинается ли на "с" или нет... я просто только начинаю изучать этот язык и ещё не во всех тонкостях разобрался что да как, а задания в универе задают такие что голову сломаешь, темболее на заочном когда сам все изучаешь....

вообще и вобщем выручайче...
0
26.10.2010, 21:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2010, 21:06

Найти количество слов, начинающихся на гласные буквы
Очень прошу помочь с задачей. Наверно, она не сложная, но для меня легче...

Найти в массиве символов количество слов, начинающихся с буквы b
Дан массив символов, содержащий английский текст. Найти количество слов,...

Дан текст. а) Найти количество слов, начинающихся с буквы б
Здравствуйте. Помогите пожалуйста с задачей... Дан текст. а) Найти...


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

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

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