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

И снова палиндром - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ программа которая по номеру дня в году выводит число и месяц http://www.cyberforum.ru/cpp-beginners/thread349113.html
программа которая по номеру дня в году выводит число и месяц (например, 7-й день года — 7 января) что б при запуске появилось сообщение (Введите номер дня в году ) ну и вводим от 1 до 365 например 20 и выводится надпись (20 января)
C++ текстовый документ и масив господа подскажите, вот в текстовом документе мы имеем допустим фразу "Hello World" как мне её от туда извлеч и сделать что бы она была в символьном масиве. Заранее огромное всем спасибо!!! http://www.cyberforum.ru/cpp-beginners/thread349087.html
Запуск программы после ввода её названия C++
Подскажите пожалуйста какой аргумент нужно вводить в cin, чтобы когда пользователь прописывал название программы например calc.exe, а затем нажимал клавишу ввод - она запускалась ? Вот код: #include <iostream> #include <windows.h> #include <conio.h> using namespace std; int a; int main(){ while (1) { cout << "type a program name" <<' ';
C++ Hello, World!
Добрый день. Купил книгу Б.Страуструпа - Принципы и практика использования С++, Напечатал первый код , при компиляции выскочили ошибки. #include "std_lib_facilities.h" int main() { cout << "Hello, World!\n"; return 0; }
C++ Проблема с vector http://www.cyberforum.ru/cpp-beginners/thread349028.html
Объявляю булевый вектор vector<bool> used; затем заполняю его false'ами for (int i=0; i<n; i++) used = false; выходит ошибка при компиляции: Debug Assertion Failed!
C++ Посоветуйте среду программирования на С++ для новичков CodeBlocks к сожалению немного не правильно работает =( http://www.cyberforum.ru/cpp-beginners/thread347740.html#post1957942 Есть что-нибудь похожее? подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
07.09.2011, 22:30     И снова палиндром
Вот так можно:
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
/////////////////////////////////////////////////////////////////////////////////////////
// Палиндром — это строка, которая читается одинаково как справа налево, так и слева направо.
// Во входном файле записан набор больших латинских букв (не обязательно различных). 
// Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется написать 
// программу, которая из данных букв по указанным правилам составит палиндром наибольшей 
// длины, а если таких палиндромов несколько, то первый в алфавитном порядке.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string          T_str;
typedef std::multiset<char>  T_symb_multiset;
/////////////////////////////////////////////////////////////////////////////////////////
const char  SYMB_FRONT  = 'A';
const char  SYMB_BACK   = 'Z';
/////////////////////////////////////////////////////////////////////////////////////////
struct  T_gen_rand_A_Z
{
    char operator() ()
    {
        return  rand() % (SYMB_BACK - SYMB_FRONT + 1) + SYMB_FRONT;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
T_str  make_palyndrom(const T_str&  s)
{
    T_symb_multiset  symb_multiset( s.begin(), s.end() );
    T_str            palynlrom;
    char             symb_centr = 0;
 
    for(char  symb = SYMB_FRONT; symb <= SYMB_BACK; ++symb)
    {
        int  n = symb_multiset.count(symb);        
        if(    symb_centr  == 0 
            && n % 2       == 1 )
        {
            symb_centr = symb;
        }
 
        palynlrom += T_str(n / 2, symb);    
    }
    T_str  rev_palyndrom = palynlrom;
    std::reverse( rev_palyndrom.begin(), rev_palyndrom.end() );
    if(symb_centr)
    {
        palynlrom += symb_centr;
    }
    return  palynlrom += rev_palyndrom;
}
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    srand(unsigned(time(0)));
    const int LINE_LEN = 50;
    T_str  s;
    std::generate_n
        (
            std::back_inserter(s),
            LINE_LEN,
            T_gen_rand_A_Z()
        );
 
    std::cout << "Исходная строка: "
              << std::endl
              << s
              << std::endl;
    
    std::sort( s.begin(), s.end() );
    std::cout << std::endl
              << "Исходная строка отсортированная: "
              << std::endl
              << s
              << std::endl;
 
    T_str  palyndrom = make_palyndrom(s);
    std::cout << std::endl
              << "Палиндром, полученный из букв этой строки:"
              << std::endl
              << palyndrom
              << std::endl;    
}
 
Текущее время: 06:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru