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

в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. - C++

Восстановить пароль Регистрация
 
gematogenka
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 29
26.10.2011, 23:41     в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. #1
Например, если заданы слова «процессор» и «информация», то ответом должно быть: «р о ц»
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2011, 23:41     в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу.
Посмотрите здесь:

Вывести на экран слова начинающиеся с той же буквы, что и первое слово предложения. Напечатать строку после изъятия этих слов. C++
C++ Напечатать в алфавитном порядке все буквы, которые входят в текст по одному разу
Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу C++
C++ Вывести слова, встречающиеся в тексте по одному разу
Напечатать все слова последовательности, которые встречаются по одному разу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
27.10.2011, 00:18     в 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
#include <iostream>
#include <string>
 
int main()
{
    std::string word1, word2;
    std::cout << "Input two words:\n";
    std::cin >> word1 >> word2;
 
    int lengthWord1 = word1.size();
    int lengthWord2 = word2.size();
    bool process = false;
    for( int i = 0; i < lengthWord1; ++i )
    {
        process = true;
        for( int j = 0; j < i; ++ j )
            if( word1[ i ] == word1[ j ] )
                process = false;
        if( process )
            for( int k = 0; k < lengthWord2; ++k )
                if( word1[ i ] == word2[ k ] )
                    std::cout << word1[ i ] << ' ';
    }
 
    std::cout << std::endl;
    system( "pause" );
    return 0;
}
Добавлено через 3 минуты
Пояснения:
Каждый символ первого слова ищем во втором слове, однако надо сперва проверить, не встречался ли такой символ раньше. Для этого нужен код в строках 15-18. В этих строчках ищем текущий( i-ый) символ начиная с начала первого слова до( но не включая) это( i-того ) символа.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.10.2011, 00:39     в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. #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
25
26
27
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
#include <set>
  
int main() 
{
   std::string s;
 
   std::cout << "input 1st word: ";
   std::cin >> s;
   std::set<char> set1(s.begin(), s.end());
   
   std::cout << "input 2nd word: ";
   std::cin >> s;   
   std::set<char> set2(s.begin(), s.end());
 
   std::string result;
   std::set_intersection(set1.begin(), set1.end(),
             set2.begin(), set2.end(),
             std::back_inserter(result));
   
   std::cout << result << '\n';
   
   return 0;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
27.10.2011, 11:17     в 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
#include <stdio.h>
#include <string.h>
 
char* share_chs(char* dst, const char* str1, const char* str2) {
  char* tmp = dst;
  const char* ptr;
  while( *str1 ) {
         if((ptr = strchr(str2, *str1)) != NULL) {
                 if(strchr(tmp, *ptr) == NULL)
                      *dst++ = *ptr;
         }
        *str1++;
   }
  *dst = '\0';
  return tmp;
}
 
int main(void) {
 char buf[16];
 puts( share_chs(buf, "BIOS", "BLOCKS") );
 getchar();
 return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.10.2011, 12:04     в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу. #5
Ещё вариант на C
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 <stdio.h>
#include <string.h>
 
#define N 50
 
int main()
{
   char s1[N];
   char s2[N];
   char buf[N] = {'\0'};
   char* ps1 = s1;
   char* pbuf = buf;
 
   printf("input 1st word: ");
   scanf("%s%*c", s1);   
   
   printf("input 2nd word: ");
   scanf("%s", s2);   
   
   while( (ps1 = strpbrk(ps1, s2)) )
   {
      if(!strchr(buf, *ps1))
     *pbuf++ = *ps1;
 
      ++ps1;
   }
 
   printf("result: %s\n", buf);
 
   return 0;
}
Yandex
Объявления
27.10.2011, 12:04     в C++ Даны два слова.Вывести все общие буквы этих слов по одному разу.
Ответ Создать тему
Опции темы

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