Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Не читаются русские символы


Автор: ДобренькийПапаша 1.12.2008, 13:35
В общем написал кусок кода, который считает количество вхождений каждой буквы в текст. Дан зашифрованный текст, частотным анализом надо расшифровать его. Делаю английские буквы всё норм, а с русскими не получается...Как исправить данную ситуацию?

Код

#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
void main()
{ 
    char s[270]="БЪОБВКТШ БЪЧОБ ХМЮ ЖЛЕДВКЗСЛЮ ДЗПМЛГСТАЛ АЪБВХЗАЛ РДВКЪДЧЗ АЪБВХВК ВХSВЗМЕЗКЛБСТШ АЪБВХ О ЕЛЧОЛДВКЗССТА ОАЪЙЪСЛЪА ВХСВЗМЕЗКЛБСТШ О ПЗХЗКЗЪАТА ОАЪЙЪСЛЪА РЪДЪОБЗСВКЧЗ ОЛАКВМВК АСВУВЗМЕЗКЛБСТШ АЪБВХ О ЕЛЧОЛДВКЗССТА ЧМЯГВА АСВУВЗМЕЗКЛБСТШ АЪБВХ О ЧМЯГВА ЕЛЧОЛДВКЗССВШ ХМЛСТ";
    char g[32];
    
    for(int p=0; p<32; p++)
    {
        //cout<<(char)<<" "<<i<<endl;
        g[p]=(char)(p+128);
        //cout<<alpha[i]<<endl;
    }
    g[31]='S';
    int array[32];
    for(p=0; p<32; p++)
    {
        array[p]=0;
    }
    int k,i,sym,z,j;

   // puts ("Vvedi stroku: ");
    //gets(s);
    
    for(i=0; i<270; i++)
    {
        for(j=0; j<32; j++)
        {
            if(s[i]==g[j]) array[j]++;
        }
        j=0;
    }

      cout<<"\n";
      z=0;

    for(i=0; i<32; i++)
    {
        cout<<g[i]<<" "<<array[i]<<endl;
    }

}

Автор: SoulSeeker 1.12.2008, 18:45
Код

#include <windows.h>

void main()
{
     char buf[270]="БЪОБВКТШ БЪЧОБ ХМЮ ЖЛЕДВКЗСЛЮ ДЗПМЛГСТАЛ АЪБВХЗАЛ РДВКЪДЧЗ АЪБВХВК ВХSВЗМЕЗКЛБСТШ АЪБВХ О            ЕЛЧОЛДВКЗССТА ОАЪЙЪСЛЪА ВХСВЗМЕЗКЛБСТШ О ПЗХЗКЗЪАТА ОАЪЙЪСЛЪА РЪДЪОБЗСВКЧЗ ОЛАКВМВК АСВУВЗМЕЗКЛБСТШ АЪБВХ О ЕЛЧОЛДВКЗССТА ЧМЯГВА АСВУВЗМЕЗКЛБСТШ АЪБВХ О ЧМЯГВА ЕЛЧОЛДВКЗССВШ ХМЛСТ";
     char g[32];
     char s[270];

     CharToOem(buf, s); ........

Автор: SoulSeeker 1.12.2008, 19:02
Тут еще в цикле ошибка: 
Код

int array[32]; 
for(/*вот тут*/int p=0; p<32; p++)
    {
        array[p]=0;
    }

и это можно сделать короче  smile :
Код

int array[32]={0};

Автор: vinter 1.12.2008, 20:34
SoulSeeker, ноль в скобках необязателен

Автор: ДобренькийПапаша 1.12.2008, 21:34
спасибо. забыл про CharToOem давно это было))))

Автор: jonie 3.12.2008, 00:18
а лучше б изучили locale ... да и вообще про CharToOem можно найти в поиске по форуму ) тут же и про locale найдете )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)