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

Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. - C++

Восстановить пароль Регистрация
 
Ромка666
6 / 6 / 0
Регистрация: 02.10.2010
Сообщений: 100
14.11.2011, 22:07     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. #1
Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2011, 22:07     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
Посмотрите здесь:

C++ Определить и вывести на экран количество слов во введеной строке
Вывести все слова из каждой строки, начинающиеся и заканчивающиеся на заданную букву и количество таких слов в каждой строке. C++
C++ Вывести на экран все шестизначные числа, сумма цифр которых равна N и сообщить количество таких чисел
C++ Определить номера тех строк целочисленной матрицы A[N,K], которые совпадают с массивом D[K], если таких строк нет - выдать соответствующее сообщение
Преобразовать полученный текст в набор строк, каждая из которых содержит целое количество слов и ее длинна не превышает 40 символов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
14.11.2011, 23:52     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. #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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
#include <queue>
using namespace std;
 
struct chars3 {
   char str[4];
   chars3(void) {
      str[3] = '\0';
   }
   inline operator char*(void) {
      return str;
  }
};
 
size_t  count_chars3(const char* str, queue<chars3>* q3) {
  chars3 n;
  size_t cnt = 0u;
  const char* iter;
  while(*str) {
        for( ;! isalpha(*str) && *str; *str++);
        for(iter = str; isalpha(*iter) && *iter; *iter++);
        if((iter - str) == 3) {
            strncpy(n.str, str, 3u * sizeof(char));
            q3->push(n);
            cnt++;    
        }
        str = iter;
  }
  return cnt;
}
 
 
int main(void) {
  queue<chars3>  words;
  char str[255] = "THE (optional) (APL, ADA), Red, xor, and, or in, INT, VAR. qwery";
  // cin.getline(str, sizeof(str), '\n');
 
   size_t cnt = count_chars3(str, &words);
   if(cnt == 0u) 
       cout << "such words do not !!!" << endl;
   else
       cout << "count words: " << cnt << endl;
 
   while( ! words.empty()) {
        cout << (char*)words.front() << endl;
        words.pop();
   }
   cin.get();
   return 0;
}
Ромка666
6 / 6 / 0
Регистрация: 02.10.2010
Сообщений: 100
15.11.2011, 00:20  [ТС]     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. #3
А можно, как нибудь по проще, я новичок и разобраться в данном коде для меня ещё тяжеловато.Но и на этом огромное спасибо.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.11.2011, 02:36     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. #4
Ромка666, вот посмотри этот вариант должен быть по-легче.
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
#include <iostream>
#include <ctype.h>
using namespace std;
 
bool get_wsign3(char* dst, char** str) {
  int cnt = 0;
  char* ptr = *str;
  do {
       if(isalpha(*ptr)) 
           cnt++;
       else {
           if(cnt > 0) {
                if(cnt == 3) {
                     strncpy(dst, ptr - cnt, 3u * sizeof(char));
                     break;
                }
           }
           cnt = 0;
       }
  } while(*ptr++ != '\0');
  *str = ptr;
  return (*ptr != '\0');
}
 
int main(void) {
   char buf[4] = { '\0' };
   char str[255] = "THE (optional) (APL, ADA), Red, xor, and, or in, INT, VAR. qwery";
   // cin.getline(str, sizeof(str), '\n');
 
   int cnt = 0;
   for(char* ptr = str; get_wsign3(buf, &ptr); cnt++) 
        cout << buf << endl;
 
   if(cnt == 0u) 
        cout << "such words do not !!!" << endl;
   else
        cout << "count words: " << cnt << endl;
   cin.get();
   return 0;
}
Yandex
Объявления
15.11.2011, 02:36     Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение.
Ответ Создать тему
Опции темы

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