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

Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.64
angeleon55
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 7
29.03.2011, 20:28     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #1
Помогите в решении, пожалуйста. Дана строка символов, состоящая из произвольного текста, слова раз
делены пробелами. Вывести на экран порядковый номер слова минимальной
длины и количество символов в этом слове.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2011, 20:28     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове.
Посмотрите здесь:

C++ Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран.
Вывести на экран порядковый номер слова, накрывающего k-ю позицию C++
Вывести на экран порядковый номер слова,накрывающего К-ю позицию в строке C++
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.03.2011, 21:18     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #2
Цитата Сообщение от angeleon55 Посмотреть сообщение
Дана строка символов, состоящая из произвольного текста, слова раз
делены пробелами. Вывести на экран порядковый номер слова минимальной
длины и количество символов в этом слове.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <set>
 
int main(){
  std::string str;
  std::cout << "\n\nString = ";
  getline(std::cin, str);
  std::istringstream ist(str);
  struct Compare{
    bool operator() (const std::string &a, const std::string &b){
      return a.length() < b.length();
    }
  };
  std::set<std::string, Compare> set_word( (std::istream_iterator<std::string>(ist)),
                                            std::istream_iterator<std::string>() );
  std::cout << "\n\nResult = " << *set_word.begin() << "\nCount symbols = " << set_word.begin()->length();
  return 0;
}
angeleon55
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 7
29.03.2011, 21:24  [ТС]     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #3
Цитата Сообщение от asics Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <set>
 
int main(){
  std::string str;
  std::cout << "\n\nString = ";
  getline(std::cin, str);
  std::istringstream ist(str);
  struct Compare{
    bool operator() (const std::string &a, const std::string &b){
      return a.length() < b.length();
    }
  };
  std::set<std::string, Compare> set_word( (std::istream_iterator<std::string>(ist)),
                                            std::istream_iterator<std::string>() );
  std::cout << "\n\nResult = " << *set_word.begin() << "\nCount symbols = " << set_word.begin()->length();
  return 0;
}
Странно, у меня не компилируется и ругается:
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(10) : error C2065: 'getline' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(17) : error C2926: 'struct main::Compare' : types with no linkage cannot be used as template arguments
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(17) : error C2061: syntax error : identifier 'ist'
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(17) : error C2066: cast to function type is illegal
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(17) : error C2059: syntax error : ','
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(19) : error C2065: 'set_word' : undeclared identifier
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(19) : error C2228: left of '.begin' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(19) : error C2228: left of '.begin' must have class/struct/union type
C:\Program Files\Microsoft Visual Studio\MyProjects\stroka02\stroka02.cpp(19) : error C2227: left of '->length' must point to class/struct/union
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
29.03.2011, 21:37     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #4
angeleon55, Незнаю, у меня компилируеться и работает без ошибок.
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
30.03.2011, 00:26     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #5
Может Вы пытаетесь скомпилировать код в проекте С#, а не С++
angeleon55
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 7
30.03.2011, 08:05  [ТС]     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #6
Цитата Сообщение от nsl Посмотреть сообщение
Может Вы пытаетесь скомпилировать код в проекте С#, а не С++
Использую microsoft visual c++ 6.0.
Спасибо за предыдущие ответы!
А возможно ли эту задачу решить иным способом? (другим подходом)
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
30.03.2011, 08:53     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #7
Цитата Сообщение от angeleon55 Посмотреть сообщение
А возможно ли эту задачу решить иным способом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
#include <boost/algorithm/string/split.hpp>
#include <boost/bind.hpp>
#include <boost/lambda/lambda.hpp>
 
int main() {
  std::string str = "This is test";
  
  std::vector<std::string> words;
  boost::split(words, str, boost::lambda::_1 == ' ');
  
  std::string min = *std::min_element(words.begin(), words.end(), 
    boost::bind(&std::string::length, _1) < boost::bind(&std::string::length, _2));
  
  std::cout << min << " " << min.length() << std::endl;
}
Результат: http://liveworkspace.org/code/01a053...242203462da268
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
30.03.2011, 11:10     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #8
Цитата Сообщение от angeleon55 Посмотреть сообщение
Помогите в решении, пожалуйста. Дана строка символов, состоящая из произвольного текста, слова раз
делены пробелами. Вывести на экран порядковый номер слова минимальной
длины и количество символов в этом слове.
Здесь начиркал попробуй тоже пишу в MS VS 6.0.
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
#include <stdio.h>
#include <string.h>
 
void main() {
 
      char buff[255];
      memset(buff, '\0', sizeof(buff));
      gets(buff);
 
 
      std::string str     = buff;
      str.append(" ");
      std::string::iterator  iter = str.begin();
      std::string  outs;
      outs.reserve( strlen(buff) + 1u );
 
      int  pos = 0, inx = 0, len = 9999999;
     do {
 
        if( *iter == ' ') {
        if( pos <=  len) {  
            outs = str.substr(inx - pos, pos);
            len   =  outs.length();
        }
        pos  = 0;
        } else
        pos++;
 
        inx++;
    } while( ++iter !=  str.end() );
 
    printf("Word = %s\nLength = %d\n", outs.c_str(),  outs.length() );
 
    outs  = "";
    str    = "";
 
}
fasked
30.03.2011, 11:14
  #9

Не по теме:

Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Результат: http://liveworkspace.org/
Не знал, что буст поддерживается , приятно удивлен.

CyBOSSeR
30.03.2011, 11:17
  #10

Не по теме:

Цитата Сообщение от fasked Посмотреть сообщение
Не знал, что буст поддерживается , приятно удивлен.
Спасибо niXman'у.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2011, 13:13     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове.
Еще ссылки по теме:

C++ Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове
Дана строка, вывести слова наименьшей длины в порядке возрастания C++
C++ Дана строка, Вывести на экран эти слова в порядке алфавита

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

Или воспользуйтесь поиском по форуму:
grrrrr
 Аватар для grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
30.03.2011, 13:13     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове. #11
можно еще и так:

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
#include <cstdlib>
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main(int argc, char *argv[])
{ 
    char arr[] = "Vetoi stroke esti slovo, dlina kotoroi naimenshaia.";
    char *p;
    int kol, num=0, n=0;
    
    p=strtok(arr, " ");
    kol=strlen(p); 
    
    
    while(p!=NULL)
    {
        n++;        
        if(strlen(p) < kol) 
        {
            kol = strlen(p);
            num = n;
        }
        p=strtok(NULL, " ");        
    }
    cout << "Poradkovii nomer slova " << num << "\n";
    cout << "kol bukv " << kol << "\n";   
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
Yandex
Объявления
30.03.2011, 13:13     Дана строка. Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове.
Ответ Создать тему
Опции темы

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