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

Постоянная Капрекара. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заполнение трёхдиагональной матрицы http://www.cyberforum.ru/cpp-beginners/thread288800.html
Всем доброе время суток! Помогите с кодом в с++. Проблема состоит в том, что у меня не выходит коректно заполнить матрицу. Унас есть файл с цыфрами, розположены в таком порядке: 2 2 1 -1 1 -0,5 0 1 -3 -1 2 1 2 2 Это ненулевые елементы трёхдиагональной матрицы 4х5. Нужно считать елементы так, что бы вышла вот такая матрица:
C++ обработка текстовых файлов (с++) Задан исходный текст на русском языке. Длина текста - не более NL строк, длина строки - не более NS символов, длина слова не более NW символов. После обработки исходного текста полученные слова хранить в однонаправленном линейном не кольцевом списке. В полученном линейном списке найти слова, начинающиеся и заканчивающиеся заданной буквой. В качестве заданной буквы используйте последнюю русскую... http://www.cyberforum.ru/cpp-beginners/thread288789.html
C++ C++ одномерный динамический массив
Нужно создать динамический одномерный массив * p. Конструктор должен позволять создавать объекты с инициализацией и без нее. Определить конструктор копий. Перегрузить операции +, =, вывода <<, ввода>> для объектов класса, а также дружественные операции *= <тип>, <тип> +. кто может помогите написать ато ещё с классами разобрался а тут уже нифига не понимаю что хотят :(
C++ Изменение слов, цифр и всего всего в тексте
Нужна помощь (хотя бы ссылки на подобные задания, сам, к сожалению, найти не смог). Дан файл с N количеством строк. Программка берёт из файла эти строки и каждое слово (например привет или число 12345) меняет на такое (тевирп или же 54321), т.е. переставляет числа/знаки/цифры местами. Тапками прошу не кидаться, за любую помощь буду благодарен.
C++ messagebox() http://www.cyberforum.ru/cpp-beginners/thread288750.html
нужно из массива вывести данные в окно messagebox #include "stdafx.h" #include "windows.h" int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { wchar_t sztext = "Tets"; MessageBox(NULL, sztext, L"Info", MB_OK); return 0;
C++ Удаление пробелов из строк, неправильный ввод.. Добрый вечер, пишу программу.. Которая повторяет функционал функции strcmp(), с той лишь разницей что не учитываю пробелы. Исходя из этого решил сначала преобразовать строки, тоесть удалить пробелы, ну а потом уже передать их в стандартную функцию strcmp(). Проблемы, в том что cin вводит строку до первого пробела, далее считывается уже как бы новая строка.. Получается я не могу ввести... подробнее

Показать сообщение отдельно
Temirlan90
 Аватар для Temirlan90
131 / 131 / 8
Регистрация: 30.09.2010
Сообщений: 333
04.05.2011, 20:56     Постоянная Капрекара.
Постоянная Капрекара
(Время: 1 сек. Память: 16 Мб Сложность: 22%)

Возьмем четырехзначное число, в котором не все цифры одинаковы, например 6264. Расположим цифры сначала в порядке убывания - 6642; затем, переставив их в обратном порядке, получим 2466. Вычтем последнее число из 6642. На следующем шаге с полученной разностью проделаем тоже самое. Через несколько таких действий получится число, переходящее само в себя и называемое постоянной Капрекара.

Требуется написать программу, которая находит эту постоянную и количество шагов для ее получения из заданного четырехзначного числа.
Входные данные

Входной файл INPUT.TXT содержит одну строку, в которой записано четырехзначное число.
Выходные данные

В выходной файл OUTPUT.TXT записываются: в первой строке постоянная Капрекара, во второй – количество шагов для ее получения.
Пример
INPUT.TXT
1234
OUTPUT.TXT
6174
3
Не понятны входные данные.

Добавлено через 23 минуты
Решение :
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
class result {
public:
    result(int kaprecar,int steps) :_kaprecar(kaprecar), _steps(steps) {
    
    }
    int kaprecar() {        
        return _kaprecar;
    }
    int steps() {
        return _steps;
    }
private:
    int _kaprecar;
    int _steps;
};
result calc(int n) {
    typedef vector<char> dVector;
    dVector digits;
    int iterCount = 0; 
    while(true) {
        int oldN = n;
        int count = 4;
        while(count --> 0) {
            digits.push_back(n % 10);
            n /= 10;       
        }
        sort(digits.begin(), digits.end(), less<int>()); 
        int n1 = 0, n2 = 0, multip = 1;
        for(dVector::const_iterator it = digits.begin(); it != digits.end(); ++it) {           
            n1 = n1 * 10 + *it;
            n2 = *it *multip + n2;         
            multip *= 10;
        }
        digits.clear();   
        n = n2 - n1;
        ++iterCount;
        if(oldN == n) {
            return result(n, iterCount - 1);           
        }
    }
}
int main() {
    int n;  
    freopen("INPUT.TXT", "r", stdin);
    freopen("OUTPUT.TXT", "w", stdout);
    cin >> n;
    result r = calc(n);
    cout << r.kaprecar() << endl << r.steps() << endl;
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru