Задание:Определить, я является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы. Если это так, вывести на экран изображение строчной буквы один раз, а прописной - два раза. В противном случае вывести на экран изображение вопросительного знака.
не могли бы вы подсказать, как определить, код прописной или строчной буквы?
volvo
9.11.2006 1:06
В файле CTYPE.H описаны 2 очень подходящих макроса:
int islower(int ch); // Не ноль, если ch в нижнем регистре (строчная) int isupper(int ch); // Не ноль, если ch в верхнем регистре (прописная)
Fee
9.11.2006 1:37
ну на сколько я понимаю, это должно выглядеть вот так:
for (i = 0; s[i] != '\0'; i++) if (isupper(s[i])) s1[a++] = s[i]; if (isupper(s[i])) s1[a++] = s[i]; else if (islower(s[i])) s2[b++] = s[i]; else printf ("?");
s1[a] = '\0'; s2[b] = '\0'; puts(s1); puts(s2);
return 0; }
поправьте что не верно пожалуйста
мисс_граффити
9.11.2006 6:26
мне почему-то кажется, что тут надо воспользоваться следующим свойством: коды прописных латинских букв 65-90, а строчных - 97-122 (могу ошибаться со значениями, таблицы под рукой нет).
твоя программка, по-моему, не совсем совпадает с заданием. по условию:
Цитата
является ли введенное с клавиатуры целое число
в приведенном коде:
Цитата
gets(s); for (i = 0; s[i] != '\0'; i++) ...
то есть допустим мы введем 98. рассматриваем как строку (нумерация в строке с нуля?) s[0] у нас '9'. isupper(s[i]) получается равносильно isupper('9'). как думаешь, что вернет функция?
В общем, я бы делала так:
{ int kod; //ввод значения переменной kod if ((kod>64)&&(kod<91)) { //двойной вывод Char(kod) - то есть символа, соответствующего коду; } else if ((kod>96)&&(kod<123)) { //вывод Char(kod); } else { //вывод вопросительного знака } }
Если хочешь, чтобы программа легче читалась и не пришлось запоминать коды, можно сравнивать не числа, а буквы, им соответствующие.
Savas
9.11.2006 20:28
Если не сложно выложите пожалуйста полное решение данной задачи , зарание большое спасибо
мисс_граффити
9.11.2006 23:03
если устроит ввод/вывод через Edit - без проблем напишу. если нужно консольное - сам разбирайся.
Гость
9.11.2006 23:36
давай.... а то я чет не могу разобраться
Алена
9.11.2006 23:53
Вариант "запутайся сам, но и преподавателя запутай":
чет не то, он все время выпросительный знак выдает....
Алена
10.11.2006 0:41
Что вводили, чтобы проверить? На чем компилируете?
Гость
10.11.2006 1:17
турбо с вводить как я понимаю надо большую и маленькую букву... (соотвественно F и f)
Алена
10.11.2006 1:26
Цитата
вводить как я понимаю надо большую и маленькую букву
Неправильно понимаешь... Смотрим задание:
Цитата
является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы
Вводишь число, а не символы... Например, попробуй ввести 66 (это код прописной 'B'), и посмотри, что будет... Попробуй 98 (это тоже код 'b', только строчной)... Ну, и то, что не входит в диапазоны, описанные мисс_граффити... Вот тут действительно будет печататься знак вопроса.
Гость
10.11.2006 1:32
спасибо, понял) а не могли бы вы комменты приписать, ну что для чего и как чтоб я разобраться смог... и еще как сделать, чтобы када запускаешь еще раз "enter...." на новой строчке были... а то результат сливается с этой надписью
Гость
10.11.2006 2:07
напиши перед первым выводом \n
Гость
10.11.2006 5:01
а что есть первый вывод? :/
Алена
10.11.2006 5:13
puts("\nenter the char code:");
Гость
10.11.2006 5:27
он же выведет эту надпись .....:/
Алена
10.11.2006 5:35
Цитата
он же выведет эту надпись
Какую надпись? Кто выведет? Управляющие символы что, в С уже отменили? А как начинаются управляющие символы? Не с бэкслеша, случайно? А "\n" - уже не перевод строки? Тогда, пожалуйста, приведите цитату из Стандарта, в которой говорится, что \n внутри строки может НЕ трактоваться как символ перевода строки...
Все-таки, сначала нужно попробовать то, что посоветовали сделать, а потом уже что-то отвечать...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.