Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/88: Рейтинг темы: голосов - 88, средняя оценка - 4.86
PavelA

Аналоги функций ord() и chr()

25.01.2010, 23:34. Показов 19187. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, программисты Си!
Подскажите пожалуйста, есть ли (и какие) сишные аналоги функций ord() и chr() из паскаля?
Большое спасибо.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.01.2010, 23:34
Ответы с готовыми решениями:

Аналог ord и chr в С++
сабж.

Каким будет результат выполнения выражения (ord(chr(ord('8')+1))-ord('0'))+round(cos(sin(0))+3/1.5 ?
Если дано выражение (ord(chr(ord('8')+1))-ord('0'))+round(cos(sin(0))+3/1.5, то результат: 1. 10 2. 11 3. 12 4. 13 5. выражение...

Написание своих функций chr() и ord(), без использования встроенных функций
В общем, нужно написать эти две функции, которые будут являться аналогами встроенных. ex_chr(code : byte) : char; begin .... ...

5
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
26.01.2010, 14:28
Прямых аналогов нет. В них просто нет нужды. Символы из стандартной строки (char[] или char*) можно интепретировать сразу и как символ и как его код.
Напрмиер
C++
1
2
3
4
5
char* str = 'Hello, World';
str[2] = 32; // записать символ с кодом 32
str[3] = ' ' // записать символ пробела
char ch = str[5]; // сохраняем 6 символ строки. 
                  // можно работать с ними и как с символом и как с числом
0
PavelA
26.01.2010, 16:47
может я чего-то недопонял...
Но,допустим у меня есть строка:
C++
1
char* str = 'Hello, World';
Как мне получить коды символов из строки?
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
26.01.2010, 16:52
Например, так:
C++
1
2
3
4
5
6
7
char* str = 'Hello, World';
int len = strlen(str);
for (int i=0; i<len; i++)
{
    char char_code = str[i];
    ...
}
0
PavelA
26.01.2010, 19:15
Спасибо тебе большое за ответы!
Последний вопрос: подскажите пожалуйста, правильно ли я переписал функцию с паскаля на Си:

функция на паскале:
Pascal
1
2
3
4
5
6
7
8
9
10
11
function rus(mes:string):string;
var i:integer;
begin
for i:=1 to length(mes) do
 begin
  case mes[i] of
   'А'..'П':mes[i]:=chr(ord(mes[i]-64));
   'Р'..'Я':mes[i]:=chr(ord(mes[i]-16));
 end;
result:=mes;
end;
таже функция на Си:
C++
1
2
3
4
5
6
7
8
9
10
11
char* rus(char* mes)
 {
  int i;
  int len=sizeof(mes);
  for(i=0;i<len;i++)
   {
    if ((mes[i]>'А')&&(mes[i]<'П'))mes[i]-=64;
    if ((mes[i]>'Р')&&(mes[i]<'Я'))mes[i]-=16;
   }
  return mes;
   }
Или я что-то неправильно сделал (просто у меня сейчас нет возможности это проверить)?
Приму любые предложения и замечания!

Заранее всем спасибо.
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
27.01.2010, 14:24
Есть ошибки. Вместо sizeof() надо использовать strlen и в условия неточные были
C++
1
2
3
4
5
6
7
8
9
10
11
char* rus(char* mes)
{
    int i;
    int len = strlen(mes);
    for (i=0;i<len; i++)
    {
        if ((mes[i]>='А') && (mes[i]<='П')) mes[i]-=64;
            else if ((mes[i]>='Р') && (mes[i]<='Я')) mes[i]-=16;
    }
    return mes;
}
Эту функцию можно написать еще вот так:
C++
1
2
3
4
5
6
7
8
9
char* rus(char* mes)
{
    for (char* ptr=mes; *ptr; ptr++)
    {
        if ((*ptr>='А') && (*ptr<='П')) *ptr -= 64;
            else if ((*ptr>='Р') && (*ptr<='Я')) *ptr -= 16;
    }
    return mes;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.01.2010, 14:24
Помогаю со студенческими работами здесь

Аналог функций chr() и ord() из Pascal
Подскажите пожалуйста, если в Visual Studio C++ аналог функций chr() и ord() как в pascal? Заранее спасибо:)

ORD CHR
Заменить в каждом слове первое вхождение буквы 'у' , если такое имеется , на сочетание 'ко&quot;.

Странность с Chr и ord
Проблема такая: использую Chr(ord(s)), должно по идее получиться s, но получается какя-то кракозябра. Что я делаю не так? Добавлено...

Функции ord() и chr()
Зравствуйте. помогите пожалуйста разобраться с этими двумя функциями: ord() и chr() Допустим: Файл в кодировке UTF-8 без BOM: echo...

Вычислить chr (ord (succ('4'))).
Вычислить chr (ord (succ('4'))).


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru