Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделить в тексте максимальное слово, Максимальное ищет, надо выделять, как? 
:(
    Опции темы
TYMON
Дата 25.5.2012, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 25.5.2012

Репутация: нет
Всего: нет



Максимальное слово оно ищет, и выводит, а как выделить в тексте (желательно по нажатию пробела, выделяет по очереди каждое)?
Код

#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();
}

PM MAIL   Вверх
borisbn
Дата 25.5.2012, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Код

#include <iostream>
#include <windows.h>

void SetHighlightedText()
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_INTENSITY);
}
void SetNormalText()
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
}

using std::cout;
using std::endl;


int main()
{
    FILE * f = fopen( "text.dat", "rt" );
// здесь сделай проверку, что файл открыт
    char strings[ 1000 ][ 1000 ];
    int maxIdx = 0;
    int maxLen = 0;
    int i = 0;
    while ( ! feof( f ) && i < 1000 ) {
        if ( fgets( strings[ i ], 1000, f ) != 0 ) {
            int len = strlen( strings[ i ] );
            if ( (int)len > maxLen ) {
                maxLen = len;
                maxIdx = i;
            }
        }
        i++;
    }
    
    for ( int j = 0; j < i; j++ ) {
        if ( j == maxIdx ) {
            SetHighlightedText();
        }
        cout << strings[ j ] << std::endl;
        if ( j == maxIdx ) {
            SetNormalText();
        }
    }
    fclose( f );
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.