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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
#1

Удалить все слова, содержащие нечетное количество согласных букв C++ - C++

06.11.2011, 22:51. Просмотров 1164. Ответов 5
Метки нет (Все метки)

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

Добавлено через 9 часов 41 минуту
Пожалуйста, очень нужно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 22:51     Удалить все слова, содержащие нечетное количество согласных букв C++
Посмотрите здесь:

Вывести на экран все слова, количество букв у которых нечетное C++
C++ Подсчитать количество предложений, содержащие нечетное количество слов
C++ Найдите все слова в предложении, содержащие по две буквы М, не стоящие рядом, и определите их количество
Из текста удалить все слова заданной длины,начинающиеся с согласных букв C++
C++ Вывести слова, содержащие гласных букв больше, чем согласных
C++ Удалить все слова, содержащие указанную пользователем букву
Удалить все слова, содержащие указанную пользователем букву C++
C++ Работа из строками. Удалить все слова, которые начинаются с согласных букв
C++ Найти и вывести все слова, у которых число гласных букв превышает число согласных
C++ В символьной строке удалить все слова, состоящие из N - букв - C++
Напечатать все слова, в которых нечетное количество букв C++
C++ Даны предложения. Вывести слова, содержащие максимальное количество различных букв

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
07.11.2011, 06:16     Удалить все слова, содержащие нечетное количество согласных букв C++ #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
#include <stdio.h>
#include <ctype.h>
 
char*  str_erase_nc(char* str) {
   int len, cnt, id = 0;
   char *iter, *sa, *sb, *tmp = str;
   const char* vowels = "аоеiуuAOEIYU", *is;
   while(*str) {
        for(; ! isalpha(*str) && *str; *str++);
        for(id = cnt = len = 0, iter = str; isalpha(*iter) && *iter; *iter++, cnt++) {
             for(is = vowels; *is; *is++) {
                if( *is == *iter )
                    id = 1;
             }
             if(! id)
                  len++;
        }
        if(len % 2) {
            while(cnt--)
                 for(sa = str, sb = str + 1; *sa; *sa++ = *sb++);
        } else
                 str += cnt;
   }
   return tmp;
}
 
int main(void) {
  char str[255] = "lisp, cobol, java(JVM), cool-ice; ROCK";
  // printf("in str: ");
  // gets(str);
 
  puts( str_erase_nc(str) );
  getchar();
  return 0;
}
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
07.11.2011, 19:51  [ТС]     Удалить все слова, содержащие нечетное количество согласных букв C++ #3
Цитата Сообщение от xAtom Посмотреть сообщение
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
#include <stdio.h>
#include <ctype.h>
 
char*  str_erase_nc(char* str) {
   int len, cnt, id = 0;
   char *iter, *sa, *sb, *tmp = str;
   const char* vowels = "аоеiуuAOEIYU", *is;
   while(*str) {
        for(; ! isalpha(*str) && *str; *str++);
        for(id = cnt = len = 0, iter = str; isalpha(*iter) && *iter; *iter++, cnt++) {
             for(is = vowels; *is; *is++) {
                if( *is == *iter )
                    id = 1;
             }
             if(! id)
                  len++;
        }
        if(len % 2) {
            while(cnt--)
                 for(sa = str, sb = str + 1; *sa; *sa++ = *sb++);
        } else
                 str += cnt;
   }
   return tmp;
}
 
int main(void) {
  char str[255] = "lisp, cobol, java(JVM), cool-ice; ROCK";
  // printf("in str: ");
  // gets(str);
 
  puts( str_erase_nc(str) );
  getchar();
  return 0;
}
Спасибо что откликнулись! Но всеравно измененная под мое условие программа не работает должным образом.
Может у кого-то есть еще идеи программы?
AC-93
13 / 13 / 0
Регистрация: 27.01.2010
Сообщений: 150
07.11.2011, 20:24     Удалить все слова, содержащие нечетное количество согласных букв C++ #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
int flag, i, j, sum =0, k = 0, leng;
char arr[ е, о, ё, у, ы, а, э, я , и ,ю]
char c = a;
char str[10000];
while (1)
{//табы на работают (
 
    leng =0;
    while (!inspace(c ))
    {
           str[k++] = c = getchar();
        leng++;
        flag = 0;
        if ( 'а' > c)
            c -= - 'A' + a;
        for (i = 0; i < 10; i++)
            if (arr[i] == c)
                flag ++;
 
    }
    if ( flag %2) 
        k -= leng;
    if ('\n' == c)
        break;
 
 
 
}
 
 
 
}
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
08.11.2011, 20:50  [ТС]     Удалить все слова, содержащие нечетное количество согласных букв C++ #5
Цитата Сообщение от AC-93 Посмотреть сообщение
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
int flag, i, j, sum =0, k = 0, leng;
char arr[ е, о, ё, у, ы, а, э, я , и ,ю]
char c = a;
char str[10000];
while (1)
{//табы на работают (
 
    leng =0;
    while (!inspace(c ))
    {
           str[k++] = c = getchar();
        leng++;
        flag = 0;
        if ( 'а' > c)
            c -= - 'A' + a;
        for (i = 0; i < 10; i++)
            if (arr[i] == c)
                flag ++;
 
    }
    if ( flag %2) 
        k -= leng;
    if ('\n' == c)
        break;
 
 
 
}
 
 
 
}
Спасибо за помощь, но даже при правильном оглашении элементов массива и редактировки некоторых ошибок програма по-прежнему не работает
WriterMix
1 / 1 / 0
Регистрация: 06.11.2011
Сообщений: 68
11.11.2011, 22:15  [ТС]     Удалить все слова, содержащие нечетное количество согласных букв C++ #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
25
26
27
28
29
30
31
#include <cstdlib> 
#include <iostream> 
#include <conio.h> 
#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 
 
using namespace std; 
 
int main() 
{ 
char arr[256]; // массив, которий нужно ввести;  
int i,j; 
int n=0; 
int m=0; 
char pru[23]={'б', 'в', 'г', 'ґ', 'д', 'ж', 'з', 'й', 'к', 'л', 'м', 'н', 'п', 'р', 'с', 'т', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь'}; 
char s1[256]; // вивести; 
printf("Vvedit stroku:\n"); 
gets(arr); 
//n = strlen(arr); 
m = strlen(pru); 
       // for (i = 0; i < n; i++) //перебор букв 
         //перебор букв  
        for (int j = 0; j < m; j++) // 
 {         
            if ( arr[j] == pru[j]) 
            pru[j]=s1[j];       
            cout<<s1[j];   
 } 
getch(); 
}
Доработайте кто-нибудь ее до конца... Пожалуйста!..
Yandex
Объявления
11.11.2011, 22:15     Удалить все слова, содержащие нечетное количество согласных букв C++
Ответ Создать тему
Опции темы

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