Помощь - Поиск - Пользователи - Календарь
Полная версия: Символ перевести в код
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Triplet
Задан одномерный массив, каждым элементом которого является строка символов. Если строка состоит из одних латинских букв, то заменить их на соответствующие коды и найти их среднее арифметическое.
Подскажите, пожалуйста, есть ли в С++ аналог паскалевских Ord() и chr(), и можно ли в C++ организовать конструкцию типа if a[i] in ['A'..'Z', 'a'..'z'] then...?
klem4
в CTYPE.H есть функция
int isalpha(int c);


ну а символ перевести в код можно простым приведением char к int (для отображаемых символов)

Triplet
Цитата(klem4 @ 10.11.2007 14:50) *

в CTYPE.H есть функция
int isalpha(int c);



isalpha проверяет, является ли символ буквой.
а мне надо найти именно латинские буквы и заменить их на коды.
у меня пока получилось только найти код символа
char k='S';
int z=k;// здесь код
klem4
Цитата
именно латинские буквы и заменить их на коды.


ch = toupper(ch);
if ((ch >= 'A') && (ch <= 'Z'))
cout << "lat.";
Triplet
понятно, спасибо большое за ответ.
мне только не совсем понятно как в массиве строк, каждый символ заменить на код, т.к., если я присваиваю число, оно выводится как символ?
Гость
Цитата(Triplet @ 10.11.2007 13:18) *

мне только не совсем понятно как в массиве строк, каждый символ заменить на код, т.к., если я присваиваю число, оно выводится как символ?
Думается мне, что ты пытаешься сделать то, что тебя не просят. Тебе сказано:
Цитата(Triplet @ 10.11.2007 12:19) *

Если строка состоит из одних латинских букв, то заменить их на соответствующие коды и найти их среднее арифметическое.
Что это значит? Если есть такая строка (только из латинских букв), то нужно просто подсчитать среднее арифметическое их кодов. Ставить коды на место букв никто не просит. "Заменить" здесь употреблено только чтоб было понятно, что складывать не буквы, а коды их..

Здесь был Lapp smile.gif))
Triplet
даже если и так smile.gif всё равно хотелось бы узнать ответ на мой вопрос.
лишней эта работа не будет
Lapp
Цитата(Triplet @ 10.11.2007 13:56) *

даже если и так smile.gif всё равно хотелось бы узнать ответ на мой вопрос.
лишней эта работа не будет

Это не работа. Никакой замены не будет. В машинном представлении символ есть код - он им был, им и останется. А что будет напечатано, зависит от того, как ты выводишь. Так что это просто твое недопонимание представления данных.
Повторяю: ничего не надо заменять. Просуммируй коды и пдели на их количество.

Твой последний вопрос типа такого:
- Кто выше летает - орел или крокодил?
- Крокодилы не летают!
- Ну, а если бы летали - то кто?
smile.gif
Ответ один: крокодилы не летают.
volvo
Да в принципе и переводить-то ничего не надо, этим занимается неявное преобразование типов:

    char *s = "ABCD\0";
int sum = 0;

for(char *p = s; *p; *p++) sum += *p;
cout << sum << endl;


Что будет в результате?
Triplet
всё понятно, большое спасибо за ответы

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.