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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
PitBool
 Аватар для PitBool
12 / 12 / 6
Регистрация: 31.10.2012
Сообщений: 45
31.10.2012, 23:55     Вывести все слова строки, в которых есть удвоение букв #1
Помогите написать программу которая выводит все слова из строки в которых есть удвоение букв, а если их нет выводит сообщение что их нет.
Условия:
  • Строка вводится из клавиатуры.
  • Количество слов в строке неограниченное.
  • Между словами может быть любое количество пробелов.
  • Строка заканчивается точкой.
Язык реализации C++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2012, 23:55     Вывести все слова строки, в которых есть удвоение букв
Посмотрите здесь:

Найти все и вывести все слова в которых есть буква "к" C++
Вывести слова, в которых нет повторяющихся букв и буквы слова упорядочены по алфавиту C++
C++ Вывести все слова, в которых есть буква "a"
Вывести на печать все слова, у которых есть двойные буквы C++
C++ Строки: Вывести на экран только те слова, которые отличаются от последнего и в которых нет повторяющихся букв.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 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;
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
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;
   }
}
PitBool
 Аватар для PitBool
12 / 12 / 6
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 01:26  [ТС]     Вывести все слова строки, в которых есть удвоение букв #4
yuron_477, результат выводит иероглифами:
Миниатюры
Вывести все слова строки, в которых есть удвоение букв  
PitBool
 Аватар для PitBool
12 / 12 / 6
Регистрация: 31.10.2012
Сообщений: 45
01.11.2012, 01:35  [ТС]     Вывести все слова строки, в которых есть удвоение букв #5
gray_fox, программа работает отлично, но мне нужен вариант без использования классов.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
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);
}
PitBool
 Аватар для PitBool
12 / 12 / 6
Регистрация: 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;
}
Миниатюры
Вывести все слова строки, в которых есть удвоение букв  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 20:31     Вывести все слова строки, в которых есть удвоение букв
Еще ссылки по теме:

Вывести все слова в предложении в которых нет повторяющихся букв C++
Строки. Вывести на экран все слова четной длины, у которых... C++
Вывести на экран все слова, количество букв в которых превышает введенное число C++

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

Или воспользуйтесь поиском по форуму:
PitBool
 Аватар для PitBool
12 / 12 / 6
Регистрация: 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++)
Yandex
Объявления
01.11.2012, 20:31     Вывести все слова строки, в которых есть удвоение букв
Ответ Создать тему
Опции темы

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