Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yuik
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 11
#1

Цифры числа - C++

27.11.2009, 22:49. Просмотров 828. Ответов 10
Метки нет (Все метки)

Есть задачка:

ВВести натуральное число, сохранить все его цифры:
А) В отсортированном массиве, массив распечатать
б) Построить список частот цифр в числе, список распечатать
В) Найти максимальное число, которое можно построить из цифр числа

Помогите, будьте добры=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 22:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цифры числа (C++):

Замена последней цифры на значение наименьшей цифры в записи числа N - C++
Ошибка в задании Условие:Дано натуральное число N. Получить новое число М, которое образуется из числа N путем замены последней цифры на...

Сложить цифры числа (до тех пор, пока не получится сумма из одной цифры) - C++
Всем Доброго времени суток. Первая программа заключается в том что с клавиатуры вводится число например 45644, нужно занести его или в...

Циклы: найти произведение последней цифры и минимальной цифры числа с произведением всех остальных - C++
Помогите, я даже не знаю о чем речь(((( Дано натуральное число n. Найти произведение последней цифры и минимальной цифры этого числа...

Получить число М, которое образуется из числа N путем замены последней цифры на значение наибольшей цифры - C++
Помогите составить программу, пожалуйста! Вот условие: Дано натуральное число N. Получить новое число М, которое образуется из числа...

Вывести сумму первой и третьей цифры и произведение второй и четвертой цифры числа, заданного пользователем - C++
Пользователь вводит 4-значное число - программа выводит сумму первой и третьей цифры и произведение второй и четвертой цифры.

В десятичной записи числа 42*4* пропущены 2 цифры. Определите эти цифры, если известно, что число кратно 72. - C++
Помогите,пожалуйста! С++

10
Акелла
Сонный металюга
45 / 45 / 6
Регистрация: 10.05.2009
Сообщений: 295
27.11.2009, 23:12 #2
т.е. ты число вводишь как строчку?

1. создаем 2 массива- символьный и целочисленный - в первый при помощи gets читаешь число как строку, а во второй при помощи atoi из первого берешь символы чисел и преобразуешь в числа
2. массив сортируем и выводим - вуаля

3. массив у тебя уже есть - даже отсортирован - считаешь сколько раз каждое число встречается - тут ну можешь например создать еще один массив куда будешь для каждого числа записывать частоту - числа все равно по порядку идут у тебя уже

а с последним - делаешь всевозможные перестановки и смотришь - каждый раз запоминаешь число если оно больше предыдущего. для этого например можно снова преобразовать его в строку и сравнивать strcmp
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
27.11.2009, 23:20 #3
есть подозрение, что наибольшее число построенное и цифр числа и будет отсортированный массив цифр числа О__о
так что всевозможные перестановки делать не надо
0
Акелла
Сонный металюга
45 / 45 / 6
Регистрация: 10.05.2009
Сообщений: 295
27.11.2009, 23:21 #4
кстати да - если отсортировать по убыванию=)
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
27.11.2009, 23:35 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <functional>
int main()
{
    std::vector<int>vec;
    std::copy(std::istream_iterator<int>(std::cin),std::istream_iterator<int>(),std::inserter(vec,vec.begin()));
    std::copy(vec.begin(),vec.end(),std::ostream_iterator<int>(std::cout," "));
    std::cout<<std::endl<<"max chislo:";
    std::sort(vec.begin(),vec.end(),std::greater<int>());
    std::copy(vec.begin(),vec.end(),std::ostream_iterator<int>(std::cout," "));
    return 0;
}
0
yuik
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 11
27.11.2009, 23:37  [ТС] #6
Андрейка:
не понял ни строки из этого кода, библиотеки, используемые вами, мы не проходили....не примут это=(
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
27.11.2009, 23:39 #7
yuik, жалко.
0
yuik
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 11
27.11.2009, 23:40  [ТС] #8
Акелла, спс за идею....ща попробую реализовать
0
Акелла
Сонный металюга
45 / 45 / 6
Регистрация: 10.05.2009
Сообщений: 295
27.11.2009, 23:42 #9
Андрей тебе просто на чисто с++ фишках все расписал
0
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
27.11.2009, 23:46 #10
Акелла, ну да ) тут по сути на каждое действие алгоритма одна строчка кода
0
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.11.2009, 11:48 #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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
 
using std::cin;
using std::cout;
 
#define BASE 10;
 
int length(int a)
{
    int len = 1;
    int temp = BASE;
 
    while(a > temp)
    {
        temp *= BASE;
        len++;
    }
 
    return len;
}
 
int low(int a, int nlow)
{
    int temp = BASE;
    while(--nlow)
    {
        temp *= BASE;
    }
    return a%temp;
}
 
void into(int *in, int n, const int len)
{
    for(int i = (len - 1); i >= 0; i--)
    {
        in[i] = low(n, 1);
        n /= BASE;
    }
}
 
void print(const int *out, const int len)
{
    for(int i = 0; i < len; i++)
    {
        cout << out[i];
    }
    cout << "\n";
}
 
/* сортировка. метод пузырька */
void sort(int *a, int size)
{
    int x = 0;
    for(int i = 0; i < size; i++)               // i - номер прохода
    {               
        for(int j = size-1; j > i; j-- )        // внутренний цикл прохода
        {
            if ( a[j-1] < a[j] )
            {
                x = a[j-1];
                a[j-1] = a[j];
                a[j] = x;
            }
        }
    }
}
 
void herz(const int *a, int size)
{
    int cipher = BASE;
    int *b = new int[cipher];
    int amount = 0;
 
    for(int i = 0; i < cipher; i++)
    {
        amount = 0;
        for(int j = 0; j < size; j++)
        {
            if( a[j] == i )
            {
                amount++;
            }
        }
        b[i] = amount;
    }
 
    print(b, cipher);
 
    delete b;
}
 
void yuik()
{
    /* объявлеие переменных */
    int n = 0;
    int nlen = 1;           // длины чисел
    int t = 0;              // временная переменная (всегда пригодится)
    int tn = 0;             // и еще одна тоже не помешает
    
    /* запрос числа от пользователя */
    cout << "Введите число 'n' (не большее, чем int): ";
    cin >> n;
 
    /* некоторые присваивания */
    tn = n;                 // чтобы не потерять исходное число, будем работать с tn
    int len = length(n);    // посчитать длину числа n (количество разрядоц/цифр)
    int *in = new int[len]; // создать массив подходящего размера
 
    into(in, n, len);       // записать число в массив in
    cout << "Число в представлении массива (правильно ли записалось?)\n";
    print(in, len);         // вывести массив на экран
    cout << "Отсортировать массив по убыванию (это и будет максимальное число ;)\n";
    sort(in, len);          // отсортировать массив
    print(in, len);         // вывести массив на экран
    cout << "Встречаемость цифр в числе (слева направо от 0 к 9)\n";
    herz(in, len);          // определить и вывести частоту цифр в числе
 
    delete in;
 
    cout << "\n";
}
 
int main(int argc, char **argv)
{
    setlocale(LC_ALL, "Russian");
    //xex(); // вычисление суммы k-млдаших разрядов числа n и k-старших разрядов числа m
    //dimiona(); // оператор switch, какой текущий месяц, если прошло n месяцев
    //yuik();
 
    yuik();
 
    system("pause");
    return 0;
}
Вот, делает все шаги, кроме максимального числа, потому что это тоже самое что сортировка.

Добавлено через 6 минут
сторонними юзал только cin и cout .. в случае надобности сам легко заменишь их на аналоги
0
29.11.2009, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2009, 11:48
Привет! Вот еще темы с ответами:

Образовать новое число, путём замены последней цифры на значение наименьшей цифры в записи исходного числа - C++
Помогите доделать задачу, минимальную цифру нашёл, последнюю цифру нашёл, только осталось присвоить значение минимальной цифры последней,...

Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу - C++
Найти двузначные числа, у которых сумма удвоенного квадрата первой цифры и квадрата второй цифры равен самому числу

Дано натуральное число n (n <= 9999). Учитывая все четыре цифры числа, определить, правильно, что оно содержит: все разные цифры - C++
Плиз срочно надо=) для Microsoft Visual Studio 2010 Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а...

Определить цифры целого числа (тип числа - целое без знака) - C++
Определить цифры целого числа( тип числа-целое без знака), вычислить сумму полученных цифр. Помогите ,пожалуйста.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru