Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/30: Рейтинг темы: голосов - 30, средняя оценка - 4.83
12 / 12 / 9
Регистрация: 31.10.2012
Сообщений: 45
1

Вывести все слова строки, в которых есть удвоение букв

31.10.2012, 23:55. Показов 6182. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать программу которая выводит все слова из строки в которых есть удвоение букв, а если их нет выводит сообщение что их нет.
Условия:
  • Строка вводится из клавиатуры.
  • Количество слов в строке неограниченное.
  • Между словами может быть любое количество пробелов.
  • Строка заканчивается точкой.
Язык реализации C++.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2012, 23:55
Ответы с готовыми решениями:

Вывести все слова строки, в которых есть удвоение букв
Здравствуйте! Задание в сабже. Ввожу в TextBox1 строку, а в итоге нужно получить список слов с...

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

Удалить из текстовой строки все слова в которых есть непарное количество согласных букв
удалить из текстовой строки все слова в которых есть непарное количество согласных букв.

Вывести на экран все слова, состоящие из K букв, в которых есть по крайней мере две одинаковые буквы, стоящие рядом
Напишите пожалуйста программу В алфавите языке племени «тумба-юмба» четыре буквы: «Ы», «Ш», «Ч»...

7
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
01.11.2012, 01:04 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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    cout<<"Введите строку для анализа: ";
    string str;
    getline(cin, str);
    stringstream ss(str);
    string temp;
    size_t i = 0;
    size_t count = 0;
    while (ss>>temp)
    {
        for (i = 0; i<temp.size()-1; i++)
        {
            if (temp[i] == temp[i+1])
            {
                count++;
                cout<<count<<": "<<temp<<"\n";
                continue;
            }
        }
    }
    cout<<endl;
    if (!count)
        cout<<"Совпадений нет.\n";
    system("pause");
    return 0;
}
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
01.11.2012, 01:26 3
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
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
 
 
int main() {
   std::string string;
 
   std::cout << "Sentence? ";
   std::getline(std::cin, string, '.');
 
   std::istringstream iss(string);
   bool hasAdjacentSymbols = false;
   for (std::istream_iterator<std::string> it(iss); it != std::istream_iterator<std::string>(); ++it) {
      if (std::adjacent_find(it->begin(), it->end()) != it->end()) {
         std::cout << *it << std::endl;
         hasAdjacentSymbols  = true;
      }
   }
   if (!hasAdjacentSymbols) {
      std::cout << "No words with adjacent symbols where found." << std::endl;
   }
}
1
12 / 12 / 9
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 01:26  [ТС] 4
yuron_477, результат выводит иероглифами:
Миниатюры
Вывести все слова строки, в которых есть удвоение букв  
0
12 / 12 / 9
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 01:35  [ТС] 5
gray_fox, программа работает отлично, но мне нужен вариант без использования классов.
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
01.11.2012, 02:41 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
32
33
34
35
36
37
38
39
40
41
42
43
#include <cstdio>
#include <cctype>
 
 
bool print_words_with_adjacent_symbols(std::FILE * const istream, std::FILE * const ostream, int const end) {
   static std::size_t const max_word_length = 256;
   char word[max_word_length];
   bool hasAdjacentSymbols = false;
 
   for (int ch = std::getc(istream); ch != end; ) {
      while (std::isspace(ch) && (ch != end)) {
         ch = std::getc(istream);
      }
 
      std::size_t i = 0;
      while (!std::isspace(ch) && (ch != end)) {
         word[i++] = ch;
         ch = std::getc(istream);
      }
      word[i] = '\0';
 
      for (std::size_t j = 1; j < i; ++j) {
         if (word[j - 1] == word[j]) {
            std::fprintf(ostream, "%s\n", word);
            hasAdjacentSymbols = true;
            break;
         }
      }
   }
 
   return hasAdjacentSymbols;
}
 
 
int main() {
   std::printf("String? ");
   std::fflush(stdout);
 
   if (!print_words_with_adjacent_symbols(stdin, stdout, '.')) {
      std::printf("No words with adjacent symbols where found.\n");
   }
   std::fflush(stdout);
}
0
12 / 12 / 9
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 19:33  [ТС] 7
gray_fox, тоже сложновато. Я не все в коде понимаю.
Наваял вот кое что сам, только проблемка: когда предложение заканчивается точкой, то последнее слово с удвоением букв выводит два раза. Где сделал не правильно?
Код
#include <iostream> 
#include <cstring>
#include <conio.h>

using namespace std;

int main()
{
	int n = 0;
	char example[]="Символы, строки (выдиления слов), аппликация аппарат аппетит.";
	const char *limits = " ,.;()-"; //Символы ограничители 
	char *pw;  //Указатель слов

	setlocale(0,".1251"); 

	cout << "Текст:\n" << example << endl;
	cout << "\nСлова:   \n";
	pw = strtok (example, limits); //Поиск первого слова
	while(pw != NULL)
		{
			for(int i = 0; i <= strlen(pw); i++)
			if(pw[i] == pw[(i+1)])	cout<<pw<<endl;
			pw = strtok (NULL, limits);  //поиск следующего слова
		}
	_getch();
	return 0;
}
Миниатюры
Вывести все слова строки, в которых есть удвоение букв  
0
12 / 12 / 9
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 20:31  [ТС] 8
Решил, но не самым разумным способом.
Поменял:
Код
for(int i = 0; i <= strlen(pw); i++)
на:
Код
for(int i = 0; i < strlen(pw); i++)
0
01.11.2012, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2012, 20:31
Помогаю со студенческими работами здесь

ввести строку длиной 70 символов, а в другую строку перенести все слова из этой строки, которые имеют удвоение букв.
помогите сделать .!!!!! нужно ввести строку длиной 70 символов, а в другую строку перенести все...

Вывести слова,в которых есть сочетание букв ам или ма
Помогите найти ошибку!Использовал оператор like для нахождения нужного сочетания букв,на экран...

В строку S2 перенести все слова, которые имеют удвоение букв
Ввести с клавиатуры строку S1 длиной до семидесяти символов. В строку S2 перенести все слова...

Выведите все слова,в которых встречается удвоение буквы
Пожалуйста, помогите написать программу на Pascal через string. Введите строку длинною 70...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru