детский вопрос по Си
PS: а вообще lol
!
It depends. unsinged int always >= 0
уговорил
if (Key == '0' || Key == '1' || Key == '2' || Key == '3' || Key == '4' || Key == '5' || Key == '6' || Key == '7' || Key == '8' || Key == '9')
{
}
понятно, что можно сделать что-то вроде
if (Key > аски-код(0) && Key < аски-код(9) )
{
} или в таком духе
Инетерсовало нету ли случайно чего-нить в духе паскалевского IN
if ( isdigit( key ) )
Там не обязательно число может быть. Может стоять произвольный набор символов.
if (Key > аски-код(0) && Key < аски-код(9) )А вот за такое убивать надо Не единым ASCII жив человек.
{
}
if(Symbols.Pos(символ)!=0)
полагаю так. Хотя новую перемнную вводить... тоже не хочется
это Borland?
как объявлена переменная Key? с этого нужно было начинать.
Инетерсовало нету ли случайно чего-нить в духе паскалевского INВсе-таки на вопрос мой так и не ответили.
Я не мама Борланд.
предположим char Key
ну вот и сделай через .Pos(...)
int i;
for(i=0; i<10; i ) if(yourchar == a[ i ]) break;
if(i == 10) printf("Не принадлежит");
Кто страшнее?
ну вот и сделай через .Pos(...)Не.. уж лучше тогда будет как есть
char a[10]={'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int i;
for(i=0; i<10; i ) if(yourchar == a[ i ]) break;
if(i == 10) printf("Не принадлежит");
Кто страшнее?
ладно... проехали.
char[] chars = {'0', '1', '2', '3', ..};
const int chars_count = sizeof(chars)/sizeof(chars[0]);
if (std::find(chars, chars chars_count, Key) != chars chars_count)
{
}
Ты вообще можешь забыть о плюсах, когда речь о Це?
просто он предлагает забыть о С
switch (Key) {
case '1':
case '2':
case '3':
case '4':
жопа
default:
жопа2
}
Модератор должен подавать пример соблюдения правил раздела.
Конструкцию типаОтвет предполагался что-то вроде:
if (Key == 0 || Key == 1 || Key == 2 || Key == 3 || Key == 4 || Key == 5 || Key == 6 || Key == 7 || Key == 8 || Key == 9)
{
}
заменить на что-нить более компактное?
if (Key in ('1','2', ...)
{
}
По ходу ничего такого нету в сях. Ну нету и не надо! Оставлю как есть! У меня эта конструкция встречается в двух местах всего! Просто немного мозолило глаз. А писать МЕГА-классы для этого дела или пользовать свитчом можно конечно, но имеет ли смысл в данной конкретной задаче?!
отцы С, как такое пишется (я уже и забыл как такое делается )
Именно такое написать нельзя, т.к. функция не будет знать, где ей остановиться
ок, в конце какой-нибудь 0 или -1
может массив и передавать?
если в первом параметре указать сколько ихИ ты сам их будешь пальцем считать? А ошибиться не боишься? Проверить-то тебя некокому будет, устанешь отлаживаться... Уж лучше -1, как Димыч советует, хотя тоже лажа, что -1 никогда не нужен что ли...
от всего страховаться программу не напишешь, не думаю, что в С есть адекватные средства решения этой проблемы,
не думаю что в OOP языках можно решить эту проблему без сильной потери производительности
З.Ы. те же яйца вид сверху.
З.З.Ы. ни кто не гарантирует, что твоей функции вдруг не придет случайный набор байтов в качестве пареметров (если планка памяти, напр. глючит)
У Подбельского он описан, если надо - вечером запощу.
в библиотеки string.h есть метод, который ищет аргумент в строке. Уже не помню какой... поищи найдешь. Есть точно!(сам пользовался).
в библиотеки string.h есть метод, который ищет аргумент в строке. Уже не помню какой... поищи найдешь. Есть точно!(сам пользовался).Уже было -
AnsiString Symbols = "набор символов"
if(Symbols.Pos(символ)!=0)
полагаю так. Хотя новую перемнную вводить... тоже не хочется
Изврасченцы!
1) Если нужно проверить, что символ принадлежит некоторому "интервалу":
if(c>='a' && c<='z')
...
Годится в случае любого "нормального" (выражусь: ANSI-совместимого) компилятора.
2) switch, если нужно проверить, что символ принадлежит некоторому фиксированному множеству, но не проходит первый пункт
3) Функция с сигнатурой
int f(int length, char* validSymbolsString если множество символов на этапе компиляции неизвестно.
P.S. Иногда, конечно, могут потребоваться какие-то более витиеватые конструкции... Но явно не автору треда.
P.P.S. А вообще заведение подобного треда, равно как и ответы в нем (особенно функции с переменным числом параметров ) должны караться месяцем исправительно-трудовых работ на жабе (java) imho
Как же меня заебали всезнайки, которые даже не удосуживаются просмотреть тред...
PS: предлагаю за непросмотр треда перед ответом банить на неделю.
switch (Key) {
case '1':
case '2':
case '3':
case '4':
жопа
default:
жопа2
}
После первой жопы нужен break (?)
да, иначе будет выполняться и "жопа2".
Ты тред-то вообще прочел? А конкретно посты.Конечно прочел. Если бы не прочел, то везде примеры кода бы вставил. Если угодно, это была краткая выжимка правильных (imho) ответов. Особенно по третьему пункту (при прочих равных выберу передачу динамического массива char *, а не функцию с переменным числом параметров...) Иначе человеку, задавшему _такой_ вопрос, просто не отличить зерна от плевел.
PS. Остальные замечания оставлю без комментариев как не соответсвующие теме треда. Если есть желание повыяснять со мной отношения, то прошу проследовать в приват.
А может там предполагается, что break в самой "жопе" будет.
P.S. Не бейте за код, я на сях редко пишу
char s[]="1234567890";//или что угодно размера n штук по 8 бит
char set[32];
for(int i=0;i<32;i++)set[i]=0;
i=0;
while(s[i]!=0)
{
set[s[i]>>3] = (set[s[i]>>3]) | (1<<(s[i]&0x7;
i++;
}//заполнили типа паскаля множество
//проверяем:
if( (set[Key>>3])& (1<<(Key&0x7
{
то, что нужно
}
Оставить комментарий
Slavaga
Конструкцию типаif (Key == 0 || Key == 1 || Key == 2 || Key == 3 || Key == 4 || Key == 5 || Key == 6 || Key == 7 || Key == 8 || Key == 9)
{
}
заменить на что-нить более компактное?