Форум программистов, компьютерный форум CyberForum.ru

найти длину слова - C++

Восстановить пароль Регистрация
 
Despot777
1 / 1 / 0
Регистрация: 14.09.2013
Сообщений: 118
25.11.2013, 22:08     найти длину слова #1
Создать символьный файл f. Найти и вывести самое длинное слово, и подсчитать в нем количество букв. Если их несколько, то вывести все слова.
Не получается вывести не сколько слов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
 
int main()
{setlocale(LC_ALL, ".1251");
 
    ofstream F;
    F.open("C:\\f.txt", ios::app);
    cout << "Ââåäèòå ñòðîêó: ";
    char string[200];
    cin.getline(string,200);
    F << string;
    
    char * pch = strtok (string," "),  // ïîëó÷Г*ГҐГ¬ ïåðâîå ñëîâî
         * word = 0; // Г±Г*ìîå äëèГ*Г*îå ñëîâî
 
    int length = strlen(pch);          // îïðåäåëÿåì äëèГ*Г*Гі ïåðâîãî ñëîâГ*
 
    int maxLen = 0; // Г±Г*ìîå äëèГ*Г*îå ñëîâî
 
      while (pch != NULL)                         // ïîêГ* ГҐГ±ГІГј ñëîâГ*
      {
          length = strlen(pch);        // îïðåäåëÿåì äëèГ*Г*Гі ñëîâГ*
 
          if (maxLen < length )        // îïðåäåëÿåì Г±Г*ìîå äëèГ*Г*îå ñëîâî
          {
              maxLen = length;
              word = pch;              // ñîõðГ*Г*ГїГҐГ¬ ГіГЄГ*Г§Г*òåëü Г*Г* ГІГҐГЄГіГ№ГҐГҐ ñëîâî
          }
 
          pch = strtok (NULL, " "); // ïîëó÷Г*ГҐГ¬ ñëåäóþùåå ñëîâî
      }
 
      cout << "Г‘Г*ìîå äëèГ*Г*îå ñëîâî: " << word
           << " , ГҐГЈГ® äëèГ*Г* Г°Г*ГўГ*Г*: " << maxLen
           << " ñèìâîëГ*Г¬ " << endl;
 F.close();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.11.2013, 15:07     найти длину слова #2
Вариант без файла:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
     
int main() 
{
    std::vector<std::string> result;
     
    std::istream_iterator<std::string> iit(std::cin);
     
    while( iit != std::istream_iterator<std::string>() )
    {
        if( result.empty() )
        {
            result.push_back( *iit );
        }
        else
        {
            size_t newLen = iit->length();
            size_t oldLen = result[0].length();
     
            if( newLen >= oldLen )
            {
                if( newLen > oldLen )
                {
                    result.clear();
                }
                result.push_back( *iit );
            }
        }
        ++iit;
    }
     
    if( !result.empty() )
    {
        std::cout << "max length: " << result[0].length() << std::endl;
    }
     
    for( auto& s : result )
    {
        std::cout << s << std::endl;
    }
     
    return 0;
}

http://ideone.com/cqyWbP
Despot777
1 / 1 / 0
Регистрация: 14.09.2013
Сообщений: 118
26.11.2013, 15:33  [ТС]     найти длину слова #3
И как она работает?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.11.2013, 15:39     найти длину слова #4
Цитата Сообщение от Despot777 Посмотреть сообщение
И как она работает?
Строго по написанному Что-то не понятно?
Despot777
1 / 1 / 0
Регистрация: 14.09.2013
Сообщений: 118
26.11.2013, 15:44  [ТС]     найти длину слова #5
Она выдает ошибку вот такую: [Error] C:\Users\Ñåðãåé\Documents\C-Free\Temp\Untitled1.cpp:42: error: a function-definition is not allowed here before ':' token
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.11.2013, 15:50     найти длину слова #6
Если проблема только с 42 строкой, то можно переписать так:
C++
1
2
3
4
for( auto it = result.begin(); it != result.end(); ++it )
{
   std::cout << *it << std::endl;
}
Если и так ругаться будет, можно еще раз "исправить"
Despot777
1 / 1 / 0
Регистрация: 14.09.2013
Сообщений: 118
26.11.2013, 15:52  [ТС]     найти длину слова #7
Теперь еще больше ошибок вывело(
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.11.2013, 15:54     найти длину слова #8
Despot777, какой компилятор?

Как вариант:
C++
1
for( std::vector<std::string>::const_iterator it = result.begin(); it != result.end(); ++it )
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.11.2013, 15:58     найти длину слова #9
Цитата Сообщение от Despot777 Посмотреть сообщение
Теперь еще больше ошибок вывело(
C++
1
2
3
for (std::size_t i = 0; i != result.size(); ++i) {
   std::cout << result[i] << std::endl;
}
Despot777
1 / 1 / 0
Регистрация: 14.09.2013
Сообщений: 118
26.11.2013, 16:02  [ТС]     найти длину слова #10
C-free

Добавлено через 3 минуты
все решил проблему!
Спасибо все за помощь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 16:02     найти длину слова
Еще ссылки по теме:

C++ Найти длину самого короткого и самого длинного слова, а также сами эти слова
C++ Даны предложения. Найти длину кратчайшего слова
C++ Найти длину указанного слова в строке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Tulosba
26.11.2013, 16:02     найти длину слова
  #11

Не по теме:

Цитата Сообщение от Despot777 Посмотреть сообщение
C-free
Шлак какой-то китайский Почти четырехлетней давности. Кто Вам это посоветовал?

Yandex
Объявления
26.11.2013, 16:02     найти длину слова
Ответ Создать тему
Опции темы

Текущее время: 07:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru