0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 10
1

Даны две строки, сформировать третью из символов, которые встречаются более двух раз

22.10.2014, 17:25. Показов 1510. Ответов 9
Метки нет (Все метки)

Добрый день, помогите с задачей пожалуйста
Даны две строки, сформировать третью из символов , которые встречаются более двух раз.
Есть код, но не могу разобраться с циклом и доделать до конца. Сказали сделать - for (i=0; i<20; i++)
for (j=i; j<20; J++) и дальше через переменную k.

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
#include "stdafx.h"
#include "string.h"
#include "iostream"
#include "cstring"
#include <string>
 
using namespace std;
 
int main()
{ setlocale(LC_ALL, "Russian");
char stroka1[12]= {'a','b','c','a','t','b','a','k','c','c','t','\0'};
char stroka2[8]= {'d','a','b','c','t','k','z','\0'};
char rezultat[20];
cout<<"Строка 1: "<< stroka1
<<"\n\n";
cout<<"Строка 2: "<< stroka2
<<"\n\n";
cout<<"Слияние: "<<strcat(stroka1,stroka2)<<endl
<<"\n\n";
int i,j,k;
for (i=0; i<20; i++)
for (j=i; j<20; J++)
 
 
 
cout<< "Результат: "<<rezultat[i];
 
system ("Pause");
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 17:25
Ответы с готовыми решениями:

Даны две строки (одинаковой длины). Создайте третью строку из символов, которые на одинаковых позициях совпадают
2. Даны две строки (одинаковой длины). Создайте третью строку из символов, которые на одинаковых...

Удалить элементы массива, которые встречаются более двух раз
Дан массив, состоящий из 12 двоичных чисел. Удалить элементы, кото- рые встречаются более двух раз.

Сформировать строку из слов, в которых одинаковые буквы встречаются более двух раз
Дан текст, состоящий не менее чем из пяти слов. Сформировать строку, в которую попадут только те...

Найти все символы, которые встречаются в строке более двух раз
Парни помогите нужно написать в C++ Builder &quot;Найти все символы, которые встречаются в строке более...

9
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
22.10.2014, 19:23 2
Более двух раз где?
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 10
22.10.2014, 19:29  [ТС] 3
в строке, которая получилась в процессе слияния : strcat(stroka1,stroka2)
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
22.10.2014, 19:35 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <unordered_map>
 
int main()
{
    const std::string str1 = "abcatbakcct", str2 = "dabctkz";
    std::unordered_map<char, int> m;
    for (auto c : str1)
        ++m[c];
    for (auto c : str2)
        ++m[c];
    for (auto p : m)
        if (p.second >= 2)
            std::cout << p.first;
}
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
22.10.2014, 19:39 5
И у тебя работает strcat() c массивом, в котором нет места для добавления?
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 10
22.10.2014, 19:44  [ТС] 6
спасибо, но мне нужно продолжить мой код, только цикл добавить, остальное правильно

Добавлено через 3 минуты
да, работает
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
22.10.2014, 19:45 7
Это не может быть правильно. Правильно так:
C++
1
2
rezultat[0] = '\0';
cout << "Слияние: " << strcat(strcat(rezultat, stroka1), stroka2);
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 10
22.10.2014, 19:49  [ТС] 8
со слиянием все правильно. а в rezultat пойдет то, что получится в конце. после цикла
0
7166 / 6141 / 2802
Регистрация: 14.04.2014
Сообщений: 26,462
22.10.2014, 20:10 9
Я понял про rezultat, но соединяешь неправильно. Это не Pascal, приёмник должен иметь достаточный размер. У тебя stroka1 - 12 символов, ничего добавить к ней нельзя.

Добавлено через 14 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
char stroka12[20];
int c;
 
cout << "Слияние: " << strcat(strcpy(stroka12, stroka1), stroka2); // stroka12 = stroka1 + stroka2
 
rezultat[0] = '\0';
for (i=0; i<20; i++)
{
    if (strchr(rezultat, stroka12[i]) == NULL)
    {
        c = 0;
        for (j = i; j < 20; j++)
        {
            if (stroka12[i] == stroka12[j]) ++c;
        }
        if (c > 2) strncat(rezultat, stroka12 + i, 1);
    }
}
cout << "Результат: " << rezultat;
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 10
23.10.2014, 08:16  [ТС] 10
спасибо большое) а не могли бы вы пояснить эту часть?

C++
1
2
3
4
5
6
7
8
9
10
11
for (i=0; i<20; i++)
{
    if (strchr(rezultat, stroka12[i]) == NULL)
    {
        c = 0;
        for (j = i; j < 20; j++)
        {
            if (stroka12[i] == stroka12[j]) ++c;
        }
        if (c > 2) strncat(rezultat, stroka12 + i, 1);
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 08:16
Помогаю со студенческими работами здесь

Обнулить все элементы массива, которые встречаются более двух раз
Есть масив розмером n. Обнулить все елементы масива , что встречаются более 2 раз. Подскажите в...

Вывести только те слова из строки, которые встречаются более n раз
Дан код, в программировании я новичок, поэтому код вероятно тупой, но все же. Как я понимаю,...

Даны две строки. Если первая строка - длиннее, сформировать третью строку, как объединение строк
Даны две строки. Если первая строка - длиннее, сформировать третью строку, как объединение строк,...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru