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

Заменить символы в строках... - C++

Восстановить пароль Регистрация
 
OffyGhost
 Аватар для OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
18.01.2011, 15:20     Заменить символы в строках... #1
Заменить наиболее часто встречающийся символ в строке S1, наиболее часто встречающимся символом в строке S2.
Длины строк произвольные, n и m
помогите написать пожалуйста :>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
18.01.2011, 16:15     Заменить символы в строках... #2
Чем помочь, что написано, что не работает?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.01.2011, 16:25     Заменить символы в строках... #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
28
29
30
31
32
33
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
 
int main()
{
    std::string str1;
    std::string str2;
    std::getline(std::cin, str1);
    std::getline(std::cin, str2);
 
    std::vector<int> str1symb;
    std::vector<int> str2symb;
 
    std::for_each(str1.begin(), str1.end(), [str1, &str1symb](char t)
    {
        str1symb.push_back(std::count(str1.begin(), str1.end(), t));
    });
    std::for_each(str2.begin(), str2.end(), [str2, &str2symb](char t)
    {
        str2symb.push_back(std::count(str2.begin(), str2.end(), t));
    });
 
    char fir=str1[std::distance(str1symb.begin(), std::max_element(str1symb.begin(), str1symb.end()))];
    char sec=str2[std::distance(str2symb.begin(), std::max_element(str2symb.begin(), str2symb.end()))];
 
    std::replace(str1.begin(), str1.end(), fir, sec);
 
    std::cout<<str1<<'\n';
    system("pause");
    return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
18.01.2011, 16:51     Заменить символы в строках... #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
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
 
char f(string& s){
    map<char, int>ma;
    for(int i=0;i<s.size();++i){
        if(s[i]!=' ') ma[s[i]]++;
    }
    auto it=max_element(ma.begin(), ma.end(), [](pair<char, int> p, pair<char, int> p1){
                return p.second<p1.second;
            });
    return it->first;
}
int main(){
    string s1, s2;
    cout<<"input s1\n";
    getline(cin, s1);
    cout<<"\ninput s2\n";
    getline(cin, s2);
    char f1=f(s1);
    char f2=f(s2);
    for(int i=0;i<s1.size();++i){
        if(s1[i]==f1)s1[i]=f2;
    }
    cout<<"\n\n"<<s1;
 
}
OffyGhost
 Аватар для OffyGhost
7 / 7 / 1
Регистрация: 04.03.2010
Сообщений: 107
19.01.2011, 11:06  [ТС]     Заменить символы в строках... #5
ооо спасибо

Добавлено через 14 часов 53 минуты
Компиляция на Линуксе через g++
куча ошибок
C
1
2
3
4
5
6
7
3_2.c: In functionchar f(std::string&):
3_2.c:11: error: ISO C++ forbids declaration of ‘it’ with no type
3_2.c:11: error: expected primary-expression before ‘[’ token
3_2.c:11: error: expected primary-expression before ‘]’ token
3_2.c:11: error: expected primary-expression before ‘p’
3_2.c:11: error: expected primary-expression before ‘p1’
3_2.c:14: error: base operand of ‘->’ is not a pointer
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
19.01.2011, 12:15     Заменить символы в строках... #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<iostream>
#include<map>
#include<algorithm>
using namespace std;
 
bool comp(pair<char, int> p, pair<char, int> p1){
    return p.second<p1.second;
}
 
char f(string& s){
    map<char, int>ma;
    for(int i=0;i<s.size();++i){
        if(s[i]!=' ') ma[s[i]]++;
    }
    map<char, int>::iterator it=max_element(ma.begin(), ma.end(), comp);
    return it->first;
}
 
int main(){
    string s1, s2;
    cout<<"input s1\n";
    getline(cin, s1);
    cout<<"\ninput s2\n";
    getline(cin, s2);
    char f1=f(s1);
    char f2=f(s2);
    for(int i=0;i<s1.size();++i){
        if(s1[i]==f1)s1[i]=f2;
    }
    cout<<"\n\n"<<s1;
}
Yandex
Объявления
19.01.2011, 12:15     Заменить символы в строках...
Ответ Создать тему
Опции темы

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