Выделить В Тексте Максимальное Слово

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем TYMON, 25 май 2012.

  1. TYMON

    TYMON Member

    Регистрация:
    19 июн 2010
    Сообщения:
    11
    Симпатии:
    0
    Программа сделана как консоль. Максимальное слово оно ищет, и выводит, а как выделить в тексте (желательно по нажатию пробела, выделяет по очереди каждое)?
    Код (C++):
    #include<iostream>
    #include<fstream>
    #include<string>
    #include<conio>
    #include<cstdio>
    #include<Windows>
    using namespace std;
    void SetHighlightedText()
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
    }
    void SetNormalText()
    {
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    }
    int main()
    {
    char s[8000]="";
    printf("--------------------------------------------------------------------------------");
    //Открытие файлов
    FILE *F;
    if((F=fopen("text.dat", "rt")) == NULL)
    {
    printf("Не могу открыть text.dat на чтение.\n");
    return -1;
    }
    char simvol;
    for(int i=0; (simvol=getc(F))!=EOF; i++)
    s[i]=simvol;
    fclose(F);
    printf("Ishodniy tekst:\n\n%s\n\n", s);
    printf("--------------------------------------------------------------------------------");
    //Поиск слов с максимальной длиной символов
    int maxStart , maxLen=0, len=0;
    for(int i=0; i<strlen(s); i++)
    // i номер позиции в строке
    // len текущий показатель длины слова
    // maxLen длина самого длинного слова
    // maxStart номер позиции с которой начинается самое длинное слово
    {
    if(s[i]!=' ' && s[i]!='\n' && i<strlen(s)-1)
    {
    len++;

    }
    else
    {
    if(i==strlen(s)-1){len++;i++;}
    if(len>maxLen){maxLen=len; maxStart = i-maxLen;
    }
    len=0;
    }
    }
    //зная длину самого длинного слова, заного читаем текст из массива s[]
    printf("\nMaksimalnoe slovo v text.dat:\n\n");
    for(int i=0; i<strlen(s); i++)
    {

    if(s[i]!=' ' && s[i]!='\n' && i<strlen(s)-1)
    {
    len++;
    }
    else
    {
    if(i==strlen(s)-1){len++;i++;}
    if(len==maxLen)
    {

    for(int j=i-maxLen; j<=i; j++)
    {
    printf("%c", s[j]);

    }
    printf("\n\n");
    }
    len=0;
    }
    }
    printf("\nKolichestvo simvolov v maksimalnom slove %d.\n", maxLen);
    printf("--------------------------------------------------------------------------------");
    getch();
    }
     
Загрузка...

Поделиться этой страницей