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

строка и слово - C++

Восстановить пароль Регистрация
 
Nasty zzz
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 39
11.12.2011, 16:20     строка и слово #1
дана строка содержащий текст.
подсчитать количество слов,
начинающихся и заканчивающихся на одну и туже букву

на тп структуру представляю и наней смог бы сделать но на С++
не имею предсавления
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 16:20     строка и слово
Посмотрите здесь:

Дана строка. Поменять местами первое слово со вторым, третье с четвертым и т.д. C++
Дана строка, заменить слово min на слово max C++
Строка: удалить последнее слово из каждого предложения. C++
Есть строка. Нужно в строке найти слово и его подменить C++
C++ Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nasty zzz
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 39
19.12.2011, 17:03  [ТС]     строка и слово #2
и не кто не умет решать эту задачу
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 17:06     строка и слово #3
Воспользуйтесь strtok.

Добавлено через 29 секунд
Остальные все уже тривиально.
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 17:28     строка и слово #4
Что-то типа такого:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
 
struct lett
{
    char w;
    int count;
};
 
lett * Find(char l, vector < lett > & p);
 
int main()
{
   vector < lett > letters;   
   vector < char * > p;
   char * iter;
   char * tmp = 0;
   lett * lett_p;
   char str[] = "one two three four string ";
 
   tmp = strtok(str, " ");
 
   while ( tmp != NULL )
   {
       p.push_back(tmp);
       tmp = strtok(NULL, " ");
   }
 
   for (int i = 0; i < p.size(); i++)
   {
      iter = p[i];
      if ((lett_p = Find(*iter, letters)) != NULL)
      {
          ++lett_p->count;
      }
      else
      {
           lett n;
           n.count = 1;
           n.w     = *iter;
           letters.push_back(n);
      }
   }
 
   int count = letters.size();
 
   for (int i = 0; i < count; i++)
   {
      lett_p = &letters[i];
      cout<<"Letter: "<<lett_p->w<<"    Count: "<<lett_p->count<<endl;
   }
 
    return 0;
}
 
lett * Find(char l, vector < lett > & p)
{
    int len = p.size();
    lett * tmp;
 
    for (int i = 0; i < len; i++)
    {
         tmp = &p[i];
         if (tmp->w == l)
             return tmp;
    }
 
    return NULL;
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.12.2011, 17:44     строка и слово #5
Цитата Сообщение от absokolov Посмотреть сообщение
Что-то типа такого:
Зачем столько строчек кода, когда там только один цикл
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define DELIM " -.,/\()"
 
int main(void)
{
    char buf[BUFSIZ];
    size_t count = 0;
    char *t;
 
    fgets (buf, BUFSIZ, stdin);
 
    t = strtok (buf, DELIM);
    while ( t )
    {
        if ( t[0] == t[strlen(t) - 1])
            ++count;
        t = strtok (NULL, DELIM);
    }
 
    printf (" Count = %d \n ", count);
 
    system ("pause");
    return 0;
}
Добавлено через 59 секунд
Строку делителей под себя переделайте.
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 17:56     строка и слово #6
плин!
начинающихся и заканчивающихся на одну и туже букву
А я чет думал что каждую букву нужно считать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 18:02     строка и слово
Еще ссылки по теме:

C++ Дана строка найти самое длинное слово с++ и на с# тоже
Символьная строка. Поменять местами второе слово с передпоследним C++
C++ Дана строка, поменять первое слово в строке с последним словом

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
19.12.2011, 18:02     строка и слово #7
Цитата Сообщение от go Посмотреть сообщение
Остальные все уже тривиально.
То же в извращённой форме
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
    
int cnt_same(char * s, const char * DELIM) { 
    char * p = strtok(s, DELIM);
    return ( p ) ? ( *p == *(p + strlen(p) - 1) ) + cnt_same(NULL, DELIM) : 0;
}
 
#define DELIM " \t\n"
    
int main(void){
    char buf[BUFSIZ], * p;
    
    while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' )
        printf("%d words starts and ends with same letter.\n", cnt_same(buf, DELIM));
    
    return 0;
}
Yandex
Объявления
19.12.2011, 18:02     строка и слово
Ответ Создать тему
Опции темы

Текущее время: 22:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru