![]() |
|
Модераторы: bsa |
![]()
|
|
| Frazelli |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.1.2009 Репутация: нет Всего: нет |
Нужно поменять регистр гласных букв в строке.
Пример: aAterUi = AatEruI #include "stdio.h" #include "string" int main() { char s[] = "aAterUi"; int l = strlen(s); for(int i=0; i<l; i++) { if((s[i]=='a') || (s[i]=='e') || (s[i]=='i') || (s[i]=='o') || (s[i]=='u') ) s[i]-=32; } for(int i=0;i<l;i++) printf("%c",s[i]); return 0; } В этом примере все гласные преобобразуются в верхний регистр. Что можно добавить чтобы гласные которые в верхнем, преобразовывались в нижний? Еще пробовал через функции toupper, tolower, но программа не работала. |
|||
|
||||
| pan2004 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 357 Регистрация: 28.7.2007 Репутация: 2 Всего: 9 |
||||
|
||||
| Frazelli |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.1.2009 Репутация: нет Всего: нет |
Нет, не сам. Сам я пытался сделать через toupper и tolower. Но почему то не получилось...
else if ((s[i]=='A') || (s[i]=='E') || (s[i]=='I') || (s[i]=='O') || (s[i]=='U') || (s[i]=='Y')) s[i]+=32; Спасибо за подсказку |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
мне кажется решение со свитчем тут будет наглядней, хотя это дело вкуса:
Это сообщение отредактировал(а) mes - 31.1.2009, 13:22 |
|||
|
||||
| Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 11 Всего: 88 |
Так попробуй:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
вместо нее, лучше использовать tolower/toupper имхо, слишком простой случай для таблиц. P.S. мне казалось 'a'-'A' не свойственно асм-программистам или же процесс пошел ?! Это сообщение отредактировал(а) mes - 31.1.2009, 14:54 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
ну.... вообщето твой case так и так скомпилируется в таблицу переходов, но зато будет лишний переход и две операции s[i]-=32; s[i]+=32; вместо одной
а 'a'-'A' нормально для любого программирования |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
так таблица соберется компилятором, в другом случае надо делать вручную, хотя и не сложно. например так :
но для тс боюсь разбор данного примера будет тяжелым грузом. для наглядности эту строчку можно записать вот так :
Это сообщение отредактировал(а) mes - 1.2.2009, 17:26 |
||||||
|
|||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |