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

Обработка символьной информации - C++

Восстановить пароль Регистрация
 
Inferno1990
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
28.05.2011, 15:31     Обработка символьной информации #1
Добрый день. Форумчани, очень нужна помощь, вот задание:Распечатать в порядке, обатном алфавитному, все буквы, которые входят в текст не менее трех раз... Вот код:
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
#include "iostream"
#include "string"
#include "conio.h"
using namespace std;
int main()
{
    char* s1 = "eertyre";;// задаем первоначальную строку
    char* s2;// задаем строку, в которой будут входить лишь те буквы,  которые входят в строку s1 не менее 3х раз
    int b=s1[7];//dlina vvedenou ctroki
    int p=0;// c4et4ik cumBoloB B cTRoke s2
    for(int i=0; i<b-2; i++)
    { 
        for(int j=1;j<b-1;j++)
        {
            for( int k=2;k<b;k++)
            if((s1[i]==s1[j])&(s1[i]==s1[k]))
            {
                s2[p]=s1[i];//заносим в массив s2 все буквы, которые повторяются не менее трех раз
                p++;
            }
        }
    }
int i=1;
for (i=1;i<p;i++)
{
    if(s2[i]>s2[i-1])
    {
        int k=s2[i];
        s2[i]=s2[i-1];
        s2[i-1]=k;
    }
}
cout<<"s2"<<endl;
getch();
}
И он не работает, мб что то не так сделанно или не доработанно...

 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2011, 15:31     Обработка символьной информации
Посмотрите здесь:

обработка символьной информации C++
обработка символьной информации C++
C++ Обработка символьной информации
Обработка символьной информации C++
C++ Обработка символьной информации
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
28.05.2011, 16:04     Обработка символьной информации #2
int b=s1[7];
это как?
быть может
C++
1
int b=7
if((s1[i]==s1[j])&(s1[i]==s1[k]))
&& должно быть
и наконец строка
cout<<"s2"<<endl;
выдаст вам 2 символа-"s2"
ps/Пожалуйста, помещайте код между
Код
[CPP]и[/CPP]
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
28.05.2011, 16:23     Обработка символьной информации #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <functional>
#include <map>
 
int main(){
    std::string s="AfdddeAdmeAeaAaa";
    std::map<char, size_t, std::greater<char> > ltrs;
    for(std::string::const_iterator it=s.begin(); it!=s.end(); ++it){
        ++ltrs[*it];
    }
    for(std::map<char, size_t>::const_iterator it=ltrs.begin(); it!=ltrs.end(); ++it){
        if(it->second>=3) std::cout<<it->first<<" "<<it->second<<"\n";
    }
    return 0;
}
Inferno1990
0 / 0 / 0
Регистрация: 14.05.2011
Сообщений: 3
28.05.2011, 16:32  [ТС]     Обработка символьной информации #4
Исправил, но ругается в этой строчке: s2[p]=s1[i];//заносим в массив s2 все буквы, которые повторяются не менее трех раз..

Добавлено через 1 минуту
Цитата Сообщение от igorrr37 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <functional>
#include <map>
 
int main(){
    std::string s="AfdddeAdmeAeaAaa";
    std::map<char, size_t, std::greater<char> > ltrs;
    for(std::string::const_iterator it=s.begin(); it!=s.end(); ++it){
        ++ltrs[*it];
    }
    for(std::map<char, size_t>::const_iterator it=ltrs.begin(); it!=ltrs.end(); ++it){
        if(it->second>=3) std::cout<<it->first<<" "<<it->second<<"\n";
    }
    return 0;
}
Спасибо конечн, но я в этом коде наврятли разберусь)) мне бы вот помочь с моим)
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
28.05.2011, 17:27     Обработка символьной информации #5
тогда так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main(){
    char *s="AfdddeAdmeAeaAaa";
    int cntr[128]={'\0'}, i;
    for(; *s; ++s){
        ++cntr[*s];
    }
    for(i=127; i>=0; --i){
        if(cntr[i]>=3) printf("%c", i);
    }
    return 0;
}
Yandex
Объявления
28.05.2011, 17:27     Обработка символьной информации
Ответ Создать тему
Опции темы

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