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

Найти самое короткое слово в строке, которое заканчивается на букву «а» - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
4eri
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 39
10.12.2010, 14:02     Найти самое короткое слово в строке, которое заканчивается на букву «а» #1
Помогите с написанием алгоритма. Заранее благодарен.
Дана строка текста, в которой слова разделены пробелами и запятыми. Необходимо:
1)найти самое короткое слово в строке, которое заканчивается на букву «а»
2)вывести результат в файл
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2010, 14:02     Найти самое короткое слово в строке, которое заканчивается на букву «а»
Посмотрите здесь:

C++ Найти самое короткое слово в строке, которое заканчивается на букву "а"
C++ Найти самое короткое слово в строке
Найти в строке самое короткое слово-палиндром, состоящее только из латинских букв C++
C++ Найти самое длинное слово, которое заканчивается на "н"
Найти самое короткое слово в строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
10.12.2010, 14:09     Найти самое короткое слово в строке, которое заканчивается на букву «а» #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 4eri Посмотреть сообщение
1)найти самое короткое слово в строке, которое заканчивается на букву «а»
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
#include <stdio.h>
#include <string.h>
 
#define MAXSIZE 256
#define DELIM " .,"
 
int main(void)
{
    char str[256], *_p;
    gets(str);
 
    for(char *p = strtok(str, DELIM); p; p =strtok(NULL, DELIM))
    {
        if(strlen(p) < strlen(_p) && p[strlen(p) - 1] == 'a')
        {
            _p = p;
        }
    }
    for(int i = 0; i < strlen(_p); ++i)
    {
        printf("%c", _p[i]);
    }
    return 0;
}
4eri
3 / 3 / 0
Регистрация: 24.04.2010
Сообщений: 39
10.12.2010, 14:10  [ТС]     Найти самое короткое слово в строке, которое заканчивается на букву «а» #3
спасибо. осталось только затолкать в файл.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.12.2010, 14:24     Найти самое короткое слово в строке, которое заканчивается на букву «а» #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
50
51
52
53
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <vector>
 
int main()
{
    std::string Str;
    std::cout<<"Enter string\n";
    std::getline(std::cin, Str);
    const std::string delims=",";
    for(std::string::iterator it=Str.begin(); it!=Str.end(); ++it)
    {
        if(delims.find(*it) != std::string::npos)
            *it=' ';
    }
    std::istringstream ist(Str);
    std::vector<std::string> Vec;
    std::string tmp;
    while(ist >> tmp)
        Vec.push_back(tmp);
    std::string max;
    const size_t inf=300;
    size_t shortlen=inf;
    for(size_t i=0; i<Vec.size(); ++i)
    {
        if(Vec[i][Vec[i].size()-1] == 'a'
            && Vec[i].size() < shortlen)
        {
            max=Vec[i];
            shortlen=Vec[i].size();
        }
    }
    if(shortlen == inf)
    {
        std::cerr<<"There are no such words\n";
        return 1;
    }
    std::string name;
    std::cout<<"Enter name of file\n";
    std::cin>>name;
    std::ofstream ofs(name.c_str());
    if(!ofs)
    {
        std::cerr<<"Can` t open file "<< name <<'\n';
        return 1;
    }
    ofs<<max<<'\n';
    std::cout<<"Succesfull\n";
    ofs.close();
    return 0;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9371 / 5421 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
10.12.2010, 17:01     Найти самое короткое слово в строке, которое заканчивается на букву «а» #5
Цитата Сообщение от asics Посмотреть сообщение
if(strlen(p) < strlen(_p) && p[strlen(p) - 1] == 'a')
_p при первом проходе - неинциализированный указатель. Длинну чего Вы там вычисляете - загадка...
Yandex
Объявления
10.12.2010, 17:01     Найти самое короткое слово в строке, которое заканчивается на букву «а»
Ответ Создать тему
Опции темы

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