IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Символ перевести в код, подскажите, пожалуйста
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


Задан одномерный массив, каждым элементом которого является строка символов. Если строка состоит из одних латинских букв, то заменить их на соответствующие коды и найти их среднее арифметическое.
Подскажите, пожалуйста, есть ли в С++ аналог паскалевских Ord() и chr(), и можно ли в C++ организовать конструкцию типа if a[i] in ['A'..'Z', 'a'..'z'] then...?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


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


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



Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


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

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



isalpha проверяет, является ли символ буквой.
а мне надо найти именно латинские буквы и заменить их на коды.
у меня пока получилось только найти код символа
char k='S';
int z=k;// здесь код
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
именно латинские буквы и заменить их на коды.


ch = toupper(ch);
if ((ch >= 'A') && (ch <= 'Z'))
cout << "lat.";


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


понятно, спасибо большое за ответ.
мне только не совсем понятно как в массиве строк, каждый символ заменить на код, т.к., если я присваиваю число, оно выводится как символ?


Сообщение отредактировано: Triplet -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата(Triplet @ 10.11.2007 13:18) *

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

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

Здесь был Lapp smile.gif))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


даже если и так smile.gif всё равно хотелось бы узнать ответ на мой вопрос.
лишней эта работа не будет
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Triplet @ 10.11.2007 13:56) *

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

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

Твой последний вопрос типа такого:
- Кто выше летает - орел или крокодил?
- Крокодилы не летают!
- Ну, а если бы летали - то кто?
smile.gif
Ответ один: крокодилы не летают.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Да в принципе и переводить-то ничего не надо, этим занимается неявное преобразование типов:

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

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


Что будет в результате?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 78
Пол: Женский

Репутация: -  0  +


всё понятно, большое спасибо за ответы

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.10.2020 4:05
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name