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

Многозначные числа - C++

Восстановить пароль Регистрация
 
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
14.04.2010, 01:25     Многозначные числа #1
Помогите разобраться с задачкой... Дано многозначное число. Вывести на печать число, состоящее из цифр, которые встречаются более одного раза в записи первоначального числа, либо вообще не встречаются в записи первоначаьного числа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2010, 01:25     Многозначные числа
Посмотрите здесь:

Даны два целых числа M но N. Вывести все целые числа из промежутка [M,n] C++
Даны два целых числа A и B (A < B). Вывести в порядке убывания все це-лые числа, расположенные между A и B (не включая числа A и B), а также количеств C++
Дан файл F, компонентами которого являются целые числа. Получить в файле G все нечетные числа, входящие в файл F. Числа в файле G должны следовать C++
C++ От данного числа N вычтем сумму цифр этого числа, от полученного числа опять вычтем сумму цифр и т.д. до тех пор, пока число положительно
C++ Как написать программу-калькулятор чтобы было можно додавать 2 числа, 3 числа, 4 числа, n чисел?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Oleg462
31 / 30 / 3
Регистрация: 18.01.2010
Сообщений: 123
14.04.2010, 01:43     Многозначные числа #2
в консоли надо ?
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
14.04.2010, 02:08  [ТС]     Многозначные числа #3
ну вообще да, хотя это не принципиально.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.04.2010, 07:36     Многозначные числа #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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define REPEATSMIN  1   /* минимальное количество повторов */
 
/* выводит повторяющиеся цифры */
int main(void) /* ANSI C89 */
{
    const char *number = "12934872344569871234897342";
    
    char visdigit[10] = "0123456789";
    int cntdigit[10] = { 0 };
    int c, i, j;
    
    for (i = 0; (c = number[i]) != '\0'; i++)
        if (isdigit(c)) {
            for (j = 0; j < 10; j++)
                if (visdigit[j] == c)
                    cntdigit[j]++;
        }
    
    printf("digits repeating:");
    for (i = 0; i < 10; i++)
        if (cntdigit[i] > REPEATSMIN)
            printf(" %c", visdigit[i]);
    putchar('\n');
    
    return EXIT_SUCCESS;
}
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
15.04.2010, 00:53  [ТС]     Многозначные числа #5
Спасибо огромное!

Как можно сделать так, чтобы число можно было ввести с клавиатуры?

Вот кое-что подкорретировал, но не работает(

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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define REPEATSMIN  1   /* ìèГ*ГЁГ¬Г*ëüГ*îå êîëè÷åñòâî ïîâòîðîâ */
 
/* âûâîäèò ïîâòîðÿþùèåñÿ öèôðû */
int main(void) /* ANSI C89 */
{
     long int *number;
    printf("Please, enter the number\n");
    scanf("%ld ",&number);
    char visdigit[10] = "0123456789";
    int cntdigit[10] = { 0 };
    int c, i, j;
    
    for (i = 0; (c = number[i]) != '\0'; i++)
        if (isdigit(c)) {
            for (j = 0; j < 10; j++)
                if (visdigit[j] == c)
                    cntdigit[j]++;
        }
    
    printf("Result:\n");
    for (i = 0; i < 10; i++)
        if (cntdigit[i] > REPEATSMIN)
            printf(" %c", visdigit[i]);
    putchar('\n');
    
    getch();
}
insideone
Модератор
Автор FAQ
 Аватар для insideone
3622 / 900 / 47
Регистрация: 10.01.2010
Сообщений: 2,429
15.04.2010, 01:00     Многозначные числа #6
inferno mf, в коде у accept переменная number - строкового типа, а вы сделали числом - конечно не будет работать. Считать в строку можно так:
C
1
2
3
    char number[50];
    printf("Please, enter the number\n");
    scanf("%s",&number[0]);
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
15.04.2010, 01:13  [ТС]     Многозначные числа #7
Цитата Сообщение от insideone Посмотреть сообщение
inferno mf, в коде у accept переменная number - строкового типа, а вы сделали числом - конечно не будет работать. Считать в строку можно так:
C
1
2
3
    char number[50];
    printf("Please, enter the number\n");
    scanf("%s",&number[0]);
ясно. спасибо большое!

просто я хотел как-то предусмотреть тот случай, чтобы нельзя было использовать числа вещественного типа.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3622 / 900 / 47
Регистрация: 10.01.2010
Сообщений: 2,429
15.04.2010, 01:16     Многозначные числа #8
Цитата Сообщение от inferno mf Посмотреть сообщение
просто я хотел как-то предусмотреть тот случай, чтобы нельзя было использовать числа вещественного типа.
Вполне логично! Тогда можно считать в какую-нибудь переменную вроде int num; а потом сделать так:
C
1
itoa(num, &number[0], 10);
Эта функция переведет число в строковое представление
inferno mf
1 / 1 / 0
Регистрация: 13.09.2009
Сообщений: 96
15.04.2010, 01:36  [ТС]     Многозначные числа #9
Цитата Сообщение от insideone Посмотреть сообщение
Вполне логично! Тогда можно считать в какую-нибудь переменную вроде int num; а потом сделать так:
C
1
itoa(num, &number[0], 10);
Эта функция переведет число в строковое представление
теперь отлично работает! спасибо огромное!

не подскажете еще как можно сделать так, чтобы выводилось сообщение в случае того, если не будет совпадающих цифр?
C
1
2
3
4
5
 printf("Result:\n");
    for (i = 0; i < 10; i++)
        if (cntdigit[i] > REPEATSMIN)
            printf("%c\n", visdigit[i]);
          else printf("None!");
так сообщение выводится по количеству итераций в цикле(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2010, 03:32     Многозначные числа
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
15.04.2010, 03:32     Многозначные числа #10
новая версия
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define REPEATSMIN  1     /* минимальное количество повторов */
#define NUMBLENMAX  100   /* максимальная длина числа */
 
 
/* выводит повторяющиеся цифры */
int main(void) /* ANSI C89 */
{
    /* const char *number = "12934872344569871234897342"; */
    
    char number[NUMBLENMAX];
    char visdigit[10] = "0123456789";
    int cntdigit[10] = { 0 };
    int c, i, j;
    int repflag;
    
    
    printf("enter a number (integer): ");
    fflush(stdout);
    
    for (i = 0; (c = getchar()) != EOF
      && isdigit(c) && i+1 < NUMBLENMAX; i++)
        number[i] = c;
    
    number[i] = '\0';
        
        
    for (i = 0; (c = number[i]) != '\0'; i++)
        if (isdigit(c)) {
            for (j = 0; j < 10; j++)
                if (visdigit[j] == c)
                    cntdigit[j]++;
        }
    
    
    printf("the number: %s" "\n", number);
    
    printf("repeating digits: ");
    
    repflag = 0;
    
    for (i = 0; i < 10; i++)
        if (cntdigit[i] > REPEATSMIN) {
            
            if (repflag == 0)
                repflag = 1;
            
            printf("%c%s", visdigit[i], (i+1 < 10 ? " " : ""));
        
        }
    
    if (repflag == 0)
        printf("none");
    
    putchar('\n');
    
    
    return EXIT_SUCCESS;
}
Yandex
Объявления
15.04.2010, 03:32     Многозначные числа
Ответ Создать тему
Опции темы

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