Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск самого длинного слова в строке 
:(
    Опции темы
goody
Дата 25.9.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем! Помогите плз разобраться 
Мне нужна функция которая находит самое длинное слово в строке и возвращает указатель на 1-ый символ этого слова
Вот что я написал :
Код

int fyn(char *s) 
{ 
    int x,y,z,k,l; 
    y=z=0; 
    for(x=0; x<=strlen(s); x++) 
    { 
         if(s[x]==' ' || s[x]=='\0'  ) 
        { 
            if( y>z) 
            {
                l=k-y; 
                z=y; 
            }
            y=0; 
        } 
        else 
        { 
            y++; 
            k=x; 
        } 
    } 
printf("\n"); 
return l; 
} 


Но если строка начинается с самого длинного слова, чет не катит 

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
const char* fyn(const char *s) 
{ 
    const char *res; //указатель на максимальное слово
    const char *beg; //начало текущего слова
    int maxLen = 0;
    int curLen = 0;
    for(res = s, beg = s; ; ++s) { 
         if ( (*s == ' ') || (*s == '\0') ) { 
            if (curLen > maxLen) {
                maxLen = curLen; 
                res = beg; 
            }
            curLen = 0;
            beg = s + 1;
            if ( *s == '\0')
                break;
        } else { 
            ++curLen; 
        } 
    } 
    return res; 
}

PM   Вверх
goody
Дата 26.9.2008, 07:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хм... а как вывести его на экран ? 
PM MAIL   Вверх
Dov
Дата 26.9.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Хм...  printf()`ом...  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
bsa
Дата 26.9.2008, 10:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(Dov @ 26.9.2008,  10:38)
Хм...  printf()`ом...  smile

не совсем так, потому что будет выведено не только оно, но и все последующие
Код
const char *p = fyn(my_text);
while(*p && (*p != ' ') )
   putchar(*p++);
putchar('\n');

PM   Вверх
Dov
Дата 26.9.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Цитата(bsa @  26.9.2008,  10:42 Найти цитируемый пост)
не совсем так, потому что будет выведено не только оно, но и все последующие
 smile 

bsa,  это смотря, как  выводить...

Добавлено через 2 минуты и 41 секунду
Например, в конце ф-ции fyn можно всунуть строку:
Код
printf("%.*s\n", maxLen, res);


Добавлено через 5 минут и 15 секунд
Вызываем.
Код

int main()
{
    fyn("1234 12345 12 12345678 123 1");
}


Получаем: 12345678    smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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