Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/23: Рейтинг темы: голосов - 23, средняя оценка - 4.52
angeleon55
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 7
#1

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

29.03.2011, 20:28. Просмотров 4113. Ответов 10
Метки нет (Все метки)

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

Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове
Дана строка, состоящая из слов, разделенных пробелами. Вывести на экран...

Вывести на экран порядковый номер слова минимальной длины и количество символов в этом слове
народ плиз помогите написать прогу в с++ Дана строка символов, состоящая из...

Вывести порядковый номер слова минимальной длины и количество символов в этом слове
Дана строка символов, состоящая из произвольного текста, слова разделены...

Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
Помогите с вот такой вот задачкой: Дана строка символов, состоящая из...

Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается
и так, вот условие: дана строка символов, состоящая из произвольного текста,...

10
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
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;
}
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
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
29.03.2011, 21:37 #4
angeleon55, Незнаю, у меня компилируеться и работает без ошибок.
0
nsl
1 / 1 / 0
Регистрация: 28.03.2011
Сообщений: 22
30.03.2011, 00:26 #5
Может Вы пытаетесь скомпилировать код в проекте С#, а не С++
0
angeleon55
0 / 0 / 0
Регистрация: 29.03.2011
Сообщений: 7
30.03.2011, 08:05  [ТС] #6
Цитата Сообщение от nsl Посмотреть сообщение
Может Вы пытаетесь скомпилировать код в проекте С#, а не С++
Использую microsoft visual c++ 6.0.
Спасибо за предыдущие ответы!
А возможно ли эту задачу решить иным способом? (другим подходом)
0
CyBOSSeR
Эксперт С++
2309 / 1682 / 148
Регистрация: 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/01a053c99d1acb2010242203462da268
0
xAtom
918 / 743 / 299
Регистрация: 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    = "";
 
}
0
fasked
30.03.2011, 11:14
  #9

Не по теме:

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

0
CyBOSSeR
30.03.2011, 11:17
  #10

Не по теме:

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

0
grrrrr
45 / 45 / 13
Регистрация: 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;
}
0
30.03.2011, 13:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2011, 13:13

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

Вывести порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается
как вывести на экран порядковый номер слова максимальной длины и номер позиции...

Строки. Поиск слова минимальной длины, вывод этой длины, номер слова и само слово
Как организовать решение такой задачи? Может как-то через создание массивов, в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru