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

Найти минимальное слово в строке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
16.11.2012, 20:00     Найти минимальное слово в строке #1
Вводится предложение чтот тип такого " ? where is your... mind?! " необходимо найти слово минимальной длины.
вроде как и написал но не работает помогите найти ошибку...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <string>
#include <iostream>
 
void main(){
    std::string str,str1 = "";
    int sizemin = 255;
    std::getline (std::cin, str);
    for (int i = 0; i < str.size(); i++){
        if ('A'<=str[i] && str[i] <= 'Z' || 'a'<=str[i] && str[i] <= 'z'){
                str1 += str[i];
                continue;
        }
        else
            if (str1.size() < sizemin){
                sizemin = str1.size();
            }
        str1 = "";
    }
    std::cout << sizemin;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2012, 20:00     Найти минимальное слово в строке
Посмотрите здесь:

C++ Найти самое большое слово в строке
в каждой строке нужно найти минимальное слово C++
Найти в строке наименьшее слово C++
C++ найти самое короткое слово в строке
C++ В строке S1 найти слово DOM
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eugine
 Аватар для Eugine
3 / 3 / 0
Регистрация: 10.11.2012
Сообщений: 63
16.11.2012, 20:25     Найти минимальное слово в строке #2
C++
1
" ? where is your... mind?! "
А где вы обрабатываете '?'
Если вам надо его пропустить, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (int i = 0; i < str.size(); ++i){
        if(!str1.size() && str[i] == ' ')
            continue;
        if (('A' <= str[i] && str[i] <= 'Z') || ('a' <= str[i] && str[i] <= 'z')){
                str1 += str[i];
                continue;
        }
        else if(str[i] == ' ')
            if (str1.size() < sizemin) {
                sizemin = str1.size();
            }
        str1 = "";
    }
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
16.11.2012, 21:58  [ТС]     Найти минимальное слово в строке #3
Цитата Сообщение от Eugine Посмотреть сообщение
C++
1
" ? where is your... mind?! "
А где вы обрабатываете '?'
Если вам надо его пропустить, то вот:
C++
1
2
3
4
for (int i = 0; i < str.size(); ++i){
        if(!str1.size() && str[i] == ' ')
            continue;
    }
Спасибо=) вот я....

Добавлено через 24 минуты
такая проблема теперь если в слове всего одна буква например J то не ищет его минимальное за 2 буквы принимает
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.11.2012, 22:16     Найти минимальное слово в строке #4
Могу предложить такой вариант программы:
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 <string>
#include <sstream>
#include <algorithm>
#include <iterator>
 
int main()
{
    setlocale (LC_ALL, "Russian");
    std::string str;
    std::cout<<"Введите строку: ";
    getline(std::cin, str);
    std::istringstream iss(str);
    std::cout<<"Слово минимальной длины: "<<*std::min_element( std::istream_iterator<std::string>(iss), 
                                                               std::istream_iterator<std::string>(), 
                                                               [](const std::string& s1, const std::string& s2)
                                                               {return s1.length()<s2.length();})
    <<std::endl;
    system("pause");
    return 0;
}
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
02.12.2012, 14:07  [ТС]     Найти минимальное слово в строке #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
void main(){
  char c;
  int s = 255,k = 0;
  while (std::cin.get(c)){
        if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z')){
                k++;
                continue;
        }
        else 
      if(k == 0) continue;
            if (k < s) {
                s = k;
            }
        k = 0;
    }
  std::cout << s;
}
вот если кому интересно
Yandex
Объявления
02.12.2012, 14:07     Найти минимальное слово в строке
Ответ Создать тему
Опции темы

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