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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 4.62
feda
Сообщений: n/a
#1

Русский язык в Visul C++. Сортировка по алфавиту - C++

11.11.2008, 21:07. Просмотров 3489. Ответов 1
Метки нет (Все метки)

Народ, помогите пожалуйста! Написал функцию сравнения по алфавиту. С английскими словами все работает, но с русскими - нет. смотрел в отладчике, там вместо введенных мной слов высвечивается совсем другие символы непонятные. Подскажите, что делать.

Код
int cmpr(char *s1, char* s2)
{
    char et[]="0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzÀàÁáÂâÃãÄäÅ娸ÆæÇçÈèÉéÊêËëÌìÍíÎîÏïÐðÑñÒòÓóÔôÕõÖö×÷ØøÙùÜüÛûÚúÝýÞþßÿ" ;
    int l1=strlen(s1), l2=strlen(s2), let=strlen(et) ;
    if(l1>=l2)
    {
        for(int i=0; i<l2; i++)
        {
            int i1, i2 ;
            for(int j=0;j<let-1; j++)
            {
                if(s1[i]==et[j]) 
                {
                    cout<<s1[i]<<endl ;
                    i1=j ;
                    break ;
                }
            }
            for(j=0;j<let-1; j++)
            {
                if(s2[i]==et[j]) 
                {
                    i2=j ;
                    break ;
                }
            }
            if(i1>i2) return 1 ;
            else if(i2>i1) return -1 ;
        }
    }
    else
    {
        for(int i=0; i<l1; i++)
        {
            int i1, i2 ;
            for(int j=0;j<let-1; j++)
            {
                if(s1[i]==et[j]) 
                {
                    i1=j ;
                    break ;
                }
            }
            for(j=0;j<let-1; j++)
            {
                if(s2[i]==et[j]) 
                {
                    i2=j ;
                    break ;
                }
            }
            if(i1>i2) return 1 ;
            else if(i2>i1) return -1 ;
        }
        
    }
    if(l1==l2) return 0 ;
    else if(l1<l2) return -1 ;
    else return 0 ;
}
там в строке et[] после танглийских букв идет русский алфавит
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2008, 21:07     Русский язык в Visul C++. Сортировка по алфавиту
Посмотрите здесь:
русский язык C++
C++ Русский язык
C++ русский язык
Русский язык C++
Русский язык в Си C++
Русский язык C++
C++ Русский Язык!!!
Русский язык в C++ C++
Русский язык C++
C++ Русский язык в консоли
Русский язык в консоли C++
Русский язык в консоли C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Casper!
15 / 14 / 1
Регистрация: 02.09.2008
Сообщений: 167
11.11.2008, 21:40     Русский язык в Visul C++. Сортировка по алфавиту #2
bool CharToOem(const char*str Src,char*str Dest);
strSrc–строка которую необходимо транслировать.
strDst–строка в каторую запишеться отраслируемый текс.
Пример:

#include <windows.h>

void rus (char*src)
{
char dst[256];
CharToOem(src,dst);
cout<<dst;
}

Настроикапроэкта (Alt+F7)=>Configuration Properties=>Character set=>Use Multi-Byte…
Yandex
Объявления
11.11.2008, 21:40     Русский язык в Visul C++. Сортировка по алфавиту
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru