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

Ввести предложение, и вывести самое короткое слово? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
12.03.2010, 23:59     Ввести предложение, и вывести самое короткое слово? #1
Ввести предложение, и вывести самое короткое слово???

Есть отдельная функция, которая удаляет подстроку со строки???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
14.03.2010, 08:54     Ввести предложение, и вывести самое короткое слово? #2
MILAN, какой язык программирования-то?
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.03.2010, 12:19  [ТС]     Ввести предложение, и вывести самое короткое слово? #3
Желательно на С!
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
14.03.2010, 13:48     Ввести предложение, и вывести самое короткое слово? #4
MILAN, как то так

Примечание: на вход подаются слова разделенные пробелами(любым количеством), не более 256 символов в строке

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
48
49
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
int main() {
    char Buff[256];
    char *pSmallWord;
    char *pCurWord;
    int BuffSize(0);
    int SmallWordSize(0);
    int CurWordSize(0);
 
    printf("Enter the string:\n");
    gets(Buff);
 
    BuffSize = strlen(Buff);
    pSmallWord = pCurWord = Buff;
    SmallWordSize = 257;
 
    for (int i=0; i<BuffSize+1; i++) {
        if (Buff[i]==' ' || Buff[i]=='\0') {
            if (Buff[i-1]!=' ') {
                if (CurWordSize<SmallWordSize) {
                    pSmallWord = pCurWord;
                    SmallWordSize = CurWordSize;
 
                }
                while (Buff[i+1]==' ') i++;
                pCurWord = &Buff[i+1];
                CurWordSize = 0;
            }
        }
        else {
            CurWordSize++;
        }
    }
 
    int n = strlen(pSmallWord);
    for (int i=0; i<n; i++) {
        if (pSmallWord[i]==' ') {
            pSmallWord[i] = '\0';
            i = n+1;
        }
    }
    printf("Result:\n%s", pSmallWord);
    getchar();
    return 0;
}
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.03.2010, 13:56  [ТС]     Ввести предложение, и вывести самое короткое слово? #5
Как то сложно! Я думал можна строку розбить strtok, потом каждое слово проверять, менше ли оно минимума, и так далее. Только я незнаю как мне удалить слово со стороки???
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
14.03.2010, 13:59     Ввести предложение, и вывести самое короткое слово? #6
Цитата Сообщение от MILAN Посмотреть сообщение
можна строку розбать strtok, потом каждое слово проверять, менше ли оно минимума, и так далее
собственно так программа и работает, за исключением функции strtok
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.03.2010, 14:32  [ТС]     Ввести предложение, и вывести самое короткое слово? #7
То есть покороче нельзя ее записать?
R0mm
Псевдо программист
 Аватар для R0mm
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
14.03.2010, 14:34     Ввести предложение, и вывести самое короткое слово? #8
MILAN, ну можно удалить пробелы, и переносы строк
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.03.2010, 14:38  [ТС]     Ввести предложение, и вывести самое короткое слово? #9
Спасибо!!!
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
14.03.2010, 14:57     Ввести предложение, и вывести самое короткое слово? #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int ckeck(string &s) { return *s.rbegin() == '.' || *s.rbegin() == ','; }
int main()
{
    string s, text, res;
    stringstream tmp;
    getline(cin, text);
    cout << text << endl;
    tmp << text;
    res = text;
    while (tmp >> s)  
    { 
        if (ckeck(s)) s.resize(s.size()-1);   
        if (s.size() < res.size()) res = s;
    }
    cout << res << endl;
    system("pause");
}
А так проще))
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
14.03.2010, 15:19  [ТС]     Ввести предложение, и вывести самое короткое слово? #11
Ето на С????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2010, 15:23     Ввести предложение, и вывести самое короткое слово?
Еще ссылки по теме:

C++ В заданной строке определить самое длинное и самое короткое слово
C++ Вывести на экран самое короткое слово заданной строки (если их несколько, то первое)
C++ Ввести последовательность предложений. Найти самое длинное слово среди них и вывести предложение с этим словом

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

Или воспользуйтесь поиском по форуму:
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
14.03.2010, 15:23     Ввести предложение, и вывести самое короткое слово? #12
вообще-то нет, но на все си++ функции что я юзал можно подобрать эквивалент на сишнике, и длина кода от этого не сильно пострадает
Yandex
Объявления
14.03.2010, 15:23     Ввести предложение, и вывести самое короткое слово?
Ответ Создать тему
Опции темы

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