Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: oleg_alexeev (27.03.2007 в 22:30) Вот, весьма эффективное решение:
#include <stdio.h> #include <limits.h> inline bool IsDelimiter(char c) { return c==' ' || c==','; } void FindMinMax(const char *str, char *maxword, char *minword) { const char *maxp=0, *minp=0; // pointers to max and min words inside input str int maxlen=0, minlen=INT_MAX; // length of max and min words while (*str) { // skip delimiters while (IsDelimiter(*str)) str++; // get current word const char *p=str; // ptr to current word int n=0; // number of letters in current word while (*str && !IsDelimiter(*str)) {str++; n++;} // compare with max and min if (n>maxlen) {maxlen=n; maxp=p;} if (n<minlen) {minlen=n; minp=p;} } // copy max and min words to output buffers for (; maxlen; maxlen--) *maxword++ = *maxp++; *maxword = 0; if (minlen != INT_MAX) for (; minlen; minlen--) *minword++ = *minp++; *minword = 0; } int main(int argc, char **argv) { char *string = "programmirovanie, eto estj nechto klassnoe"; char maxword[100], minword[100]; FindMinMax(string, maxword, minword); printf("max: %s\n", maxword); printf("min: %s\n", minword); }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: