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

Найдите два слова с наилучшей рифмой и еще две задачи. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Отличие static от объявление переменных ДО функции main http://www.cyberforum.ru/cpp-beginners/thread52763.html
Может быть я не совсем точно выразился в заголовке. Интересует отличие объявление переменных ДО функции main и объявление через static. По моим ощущениям если объявлено через static, то переменная существует всегда(даже при выходе из блока где она использовалась). Но ведь если просто объявить переменные до функции main они также будут видны везде. Поясните в чем загвоздка. Заранее спасибо. ...
C++ указатели когда работаешь с оператором delete нужно как-то показывать указатель?? Подробнее непишите пожалуйста?? http://www.cyberforum.ru/cpp-beginners/thread52761.html
Динамическое создание файлов. C++
Очень нужен пример такой на С/С++ (поф,ибо у меня DEV-C++).Кто поможет ?:( ЗЫ: Вылетает Unhandled Win32 exception =_= в моем примере
Как создают современные компьютерные игры? C++
Интересно, как создают современные компьютерные игры?? То есть на каком языке программирования?? Я слышал в основном на с++!!! Кто нибудь может мне помочь, хочу попробовать создать игру??
C++ Подскажите о операторе delete http://www.cyberforum.ru/cpp-beginners/thread52739.html
Как правильно пользоваться оператором удаления delete??
C++ Ключевое слово break Как правильно надо использовать ключевое слово break?? подробнее

Показать сообщение отдельно
Search..
Заказ софта
340 / 185 / 10
Регистрация: 26.05.2009
Сообщений: 863
27.09.2009, 02: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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <iostream>
#include <fstream>
 
class find_rifm
{
public:
    find_rifm(char* dir)
    { strcpy(path, dir);
      ifFile.open(dir); }
    ~find_rifm()
    { ifFile.close();   }
 
    bool startFind(char*, char*);
private:
    char path[256];
    char word[64];
    char words[100][64];
    std::ifstream ifFile;
};
 
bool find_rifm::startFind(char* chOne, char* chTwo)
{
    if(ifFile.fail())
        return false;
 
    system("title Search rhymes...\n");
    int flg = 0;
 
    do
    {
        ifFile >> words[flg];
        flg++;
    } while(!ifFile.eof());
 
    int size = flg, symbol = 0, max = 1, lenOne = 0, lenTwo = 0;
 
    for(int i = 0; i < size; i++)
    {
        lenOne = (int)strlen(words[i]);
        for(int j = i + 1; j < size; j++)
        {
            lenTwo = (int)strlen(words[j]);
            while(!strncmp(strrev(words[i]), strrev(words[j]), symbol + 1))
            {
                if(symbol == std::min <int> (lenOne, lenTwo))
                    break;
                else
                {
                    std::cout << "\n////////////////////////////////////\n";
                    std::cout << "/// " << strrev(words[i]) << " : " << strrev(words[j]) << "\n";
                    std::cout << "/// ----------------------\n";
                    std::cout << "/// Identical symbols: " << symbol++ + 1 << "\n";
                    std::cout << "////////////////////////////////////\n";
                }
            }
 
            if(symbol > max)
            {
                max = symbol;
                strcpy(chOne, strrev(words[i]));
                strcpy(chTwo, strrev(words[j]));
            }
 
            symbol = 0;
        }
    }
 
    std::cout << "\n\n------------------------------------------------------------\n";
    std::cout << "--- Result for file \'" << path << "\'\n";
    std::cout << "------------------------------------------------------------\n\n";
    system("title Find completed.");
    return true;
}
 
int main(int argc, char* argv[])
{
    char dir[128] = "\0", one[64] = "\0", two[64] = "\0";
 
    if(argc == 2)
        strcpy(dir, argv[1]);
    else
    {
        std::cout << "Enter file words:\n> ";
        std::cin  >> dir;
    }
 
    find_rifm myRifm(dir);
 
    if(myRifm.startFind(one, two))
    {
        std::cout << "[One word]: " << one << "\n";
        std::cout << "[Two word]: " << two << "\n";
    }
    else
    {
        system("title ERROR");
        std::cout << "File don't open...\n";
    }
 
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru