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

> Внимание!

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

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

 
 Ответить  Открыть новую тему 
> Задачка, C
сообщение
Сообщение #1





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

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


Задание:Определить, я является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы. Если это так, вывести на экран изображение строчной буквы один раз, а прописной - два раза. В противном случае вывести на экран изображение вопросительного знака.

не могли бы вы подсказать, как определить, код прописной или строчной буквы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






В файле CTYPE.H описаны 2 очень подходящих макроса:

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

 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


ну на сколько я понимаю, это должно выглядеть вот так:
Код
#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;
}

поправьте что не верно пожалуйста

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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


мне почему-то кажется, что тут надо воспользоваться следующим свойством: коды прописных латинских букв 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
{
//вывод вопросительного знака
}
}


Если хочешь, чтобы программа легче читалась и не пришлось запоминать коды, можно сравнивать не числа, а буквы, им соответствующие.

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Если не сложно выложите пожалуйста полное решение данной задачи unsure.gif , зарание большое спасибо rolleyes.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


если устроит ввод/вывод через Edit - без проблем напишу.
если нужно консольное - сам разбирайся.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






давай....smile.gif а то я чет не могу разобраться
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Вариант "запутайся сам, но и преподавателя запутай":
#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;
}
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






чет не то, он все время выпросительный знак выдает....
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Что вводили, чтобы проверить? На чем компилируете?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






турбо с
вводить как я понимаю надо большую и маленькую букву... (соотвественно F и f)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
вводить как я понимаю надо большую и маленькую букву
Неправильно понимаешь... Смотрим задание:
Цитата
является ли введенное с клавиатуры целое число кодом латинской прописной или строчной буквы


Вводишь число, а не символы... Например, попробуй ввести 66 (это код прописной 'B'), и посмотри, что будет... Попробуй 98 (это тоже код 'b', только строчной)... Ну, и то, что не входит в диапазоны, описанные мисс_граффити... Вот тут действительно будет печататься знак вопроса.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






спасибо, понялsmile.gif)
а не могли бы вы комменты приписать, ну что для чего и какsmile.gif чтоб я разобраться смог...
и еще как сделать, чтобы када запускаешь еще раз "enter...." на новой строчке были... а то результат сливается с этой надписью
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






напиши перед первым выводом \n
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






а что есть первый вывод? :/
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






puts("\nenter the char code:");
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






он же выведет эту надпись .....:/
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Гость






Цитата
он же выведет эту надпись
Какую надпись? Кто выведет? Управляющие символы что, в С уже отменили? А как начинаются управляющие символы? Не с бэкслеша, случайно? А "\n" - уже не перевод строки? Тогда, пожалуйста, приведите цитату из Стандарта, в которой говорится, что \n внутри строки может НЕ трактоваться как символ перевода строки...

Все-таки, сначала нужно попробовать то, что посоветовали сделать, а потом уже что-то отвечать...
 К началу страницы 
+ Ответить 

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

 





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