Помощь - Поиск - Пользователи - Календарь
Полная версия: Задачка
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Fee
Задание:Определить, я является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы. Если это так, вывести на экран изображение строчной буквы один раз, а прописной - два раза. В противном случае вывести на экран изображение вопросительного знака.

не могли бы вы подсказать, как определить, код прописной или строчной буквы?
volvo
В файле CTYPE.H описаны 2 очень подходящих макроса:

int islower(int ch); // Не ноль, если ch в нижнем регистре (строчная)
int isupper(int ch); // Не ноль, если ch в верхнем регистре (прописная)

Fee
ну на сколько я понимаю, это должно выглядеть вот так:
Код
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main(void)
{
    char s[80], s1[80], s2[80];


    int a = 0, b = 0, i;
    gets(s);


    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;
}

поправьте что не верно пожалуйста
мисс_граффити
мне почему-то кажется, что тут надо воспользоваться следующим свойством: коды прописных латинских букв 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
Если не сложно выложите пожалуйста полное решение данной задачи unsure.gif , зарание большое спасибо rolleyes.gif
мисс_граффити
если устроит ввод/вывод через Edit - без проблем напишу.
если нужно консольное - сам разбирайся.
Гость
давай....smile.gif а то я чет не могу разобраться
Алена
Вариант "запутайся сам, но и преподавателя запутай":
#include <stdio.h>
#include <ctype.h>

int main() {
int i, code, upper;

puts("enter the char code:");
scanf("%d", &code);

for(i = 0; i < 1 + (upper = isupper(code) ? 1 : 0); ++i)
printf("%c", (upper || islower(code)) ? code : '?');
return 0;
}
Гость
чет не то, он все время выпросительный знак выдает....
Алена
Что вводили, чтобы проверить? На чем компилируете?
Гость
турбо с
вводить как я понимаю надо большую и маленькую букву... (соотвественно F и f)
Алена
Цитата
вводить как я понимаю надо большую и маленькую букву
Неправильно понимаешь... Смотрим задание:
Цитата
является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы


Вводишь число, а не символы... Например, попробуй ввести 66 (это код прописной 'B'), и посмотри, что будет... Попробуй 98 (это тоже код 'b', только строчной)... Ну, и то, что не входит в диапазоны, описанные мисс_граффити... Вот тут действительно будет печататься знак вопроса.
Гость
спасибо, понялsmile.gif)
а не могли бы вы комменты приписать, ну что для чего и какsmile.gif чтоб я разобраться смог...
и еще как сделать, чтобы када запускаешь еще раз "enter...." на новой строчке были... а то результат сливается с этой надписью
Гость
напиши перед первым выводом \n
Гость
а что есть первый вывод? :/
Алена
puts("\nenter the char code:");
Гость
он же выведет эту надпись .....:/
Алена
Цитата
он же выведет эту надпись
Какую надпись? Кто выведет? Управляющие символы что, в С уже отменили? А как начинаются управляющие символы? Не с бэкслеша, случайно? А "\n" - уже не перевод строки? Тогда, пожалуйста, приведите цитату из Стандарта, в которой говорится, что \n внутри строки может НЕ трактоваться как символ перевода строки...

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