anad, если подсветка не нужна, можешь её убрать.
| Код | #include <windows.h> #include <stdio.h> #include <conio.h>
// выбор цветов для подсветки (можно удалить за ненадобностью) enum COLOR {BLACK, BLUE = 9, GREEN, TURQUOISE, RED, VIOLET, YELLOW};
// функция подсветки (можно удалить за ненадобностью) void textcolor(short x, short y, WORD color = BLACK) { HANDLE stdOut = GetStdHandle(STD_OUTPUT_HANDLE); COORD coord = {x, y}; WriteConsoleOutputAttribute(stdOut, &color , 1, coord, NULL); }
// функция поиска начальной и конечной позиции, упорядоченной по // возрастанию последовательности символов максимальной длины void FindPos( char* str, // исходная строка int * beg, // начальная позиция int * end // конечная позиция )
{ int firpos; // начальная позиция текущей последовательности int curlen; // длина текущей последовательности int maxlen = 1; // максимальная длина последовательности int i;
for(i = 1; str[i] != '\0'; i++) { curlen = 1; // начальная длина текущей последовательности firpos = i; // начальное значение первой позиции текущей последовательности
// пока очередной символ больше предыдущего while(str[i] > str[i - 1]) { curlen++; // увеличиваем длину текущей последовательности i++; // и переходим к следующему символу }
// если длина текущей последовательности больше максимальной if(curlen > maxlen) { // то запоминаем новые значения maxlen = curlen; // максимальной длины, *beg = firpos; // начальной *end = i; // и конечной позиции } } }
int main() { char* str = "hrjwrtjfyulgksacdefgjnoprstyergqehguifizcvnxvbmghgkdtykj"; int begPos = 1; int endPos = 1; // ищем... FindPos(str, &begPos, &endPos);
// вывод на экран printf("Source string:\n%s\n\n", str); printf("123456789012345678901234567890123456789012345678900123456789012345678901234567890\n"); printf(" 1 2 3 4 5 6 7 8\n\n"); printf("First position: %d\n", begPos); printf("Last position: %d\n", endPos);
// подсвечиваем максимальную последовательность // (можно удалить за ненадобностью) for(begPos--; begPos < endPos; begPos++) textcolor(begPos, 1, RED);
// выход из программы printf("\nPress any key to quit... \n"); getch();
return 0; } |
|