Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Символ перевести в код

Автор: Triplet 10.11.2007 16:19

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

Автор: klem4 10.11.2007 16:50

в CTYPE.H есть функция

int isalpha(int c);


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


Автор: Triplet 10.11.2007 16:56

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

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



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

Автор: klem4 10.11.2007 17:02

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


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

Автор: Triplet 10.11.2007 17:18

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

Автор: Гость 10.11.2007 17:53

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

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

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

Здесь был Lapp smile.gif))

Автор: Triplet 10.11.2007 17:56

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

Автор: Lapp 10.11.2007 18:08

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

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

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

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

Автор: volvo 10.11.2007 19:21

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

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

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


Что будет в результате?

Автор: Triplet 10.11.2007 19:58

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