0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
1

Проверить, есть ли цифры, не встречающиеся ни разу

15.12.2008, 00:37. Показов 1860. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста с программой на Си.
Проверить, есть ли цифры, не встречающиеся ни разу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2008, 00:37
Ответы с готовыми решениями:

Вывести по одному разу цифры, встречающиеся в строке
//подключение блоков #include <stdio.h> #include <stdlib.h> #include <math.h> #include...

Проверить, встречаются ли в строке хотя бы по одному разу все арабские цифры
Для введенной с клавиатуры строки символов, содержащей буквы латинского алфавита, арабские цифры,...

Выведите по убыванию все цифры (каждую по одному разу), которые есть в первом числе, но нет во втором
2. С клавиатуры вводится два натуральных числа. Выведите по убыванию все цифры (каждую по одному...

Есть натуральное число n. Проверить, есть ли в том числе 3 одинаковых цифры
Помогите реализировать 2 задания при с использованием указателей. Я коды написал, но не уверен в их...

16
0 / 0 / 0
Регистрация: 05.12.2008
Сообщений: 4
15.12.2008, 03:03 2
О да... если бы все люди так обьясняли что им нужно мир - стал бы намного проще... Если серьезно, что тебе надо?
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 17:21  [ТС] 3
Составить программу на языке Си в целом типе данных, которая для любых допустимых и корректно записанных целых чисел в десятичном изображении, вводимых из входного текстового файла, проверяет, есть ли цифры, не встречающиеся ни разу.
0
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
15.12.2008, 17:44 4
ну вот, задача теперь ясна : ) свои наработки есть? : ) иначе вам сюда : )
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 18:01  [ТС] 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main ()
{
    int c, i;
    putchar(c);
    scanf("%d", & c);
    if(i>=0 && i<=9)
    {
           while(c!=i)
        {
            printf("%d", i);
        }
       putchar(c);
    }
    return 0;
}
вот только это не работает(
0
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
15.12.2008, 18:07 6
о боги... а что это, простите за нескромный вопрос? насколько я могу судить по вашему заданию - вам надо открыть текстовый файл (предварительно его создать и занести в него значения), прочитать его содержимое да проверить. Цифр у нас всего 10. сталбыть хм.. тут первое что на ум приходит - завести массив из десяти указателей=0. Как находим цифру - ставим на ее месте 1ку. Проверяем это дело пока файл не кончится, либо пока все указатели не станут единичками. что значит все цифры нам встретились.
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 18:17  [ТС] 7
Да..но что нужно делать если мы встретили не все цифры? об этом ведь надо что-то написать..
0
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
15.12.2008, 18:28 8
ну а коли не все цифры встретили - надо их вывести, я полагаю.. дерзайте)
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 18:55  [ТС] 9
Хм..спасибо..попытаюсь...

Добавлено через 22 минуты 38 секунд
А вот только можно еще вопрос.. эту задачу решить без массивов возможно?
0
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
15.12.2008, 19:04 10
можно, только придется вместо одного цикла десять условий писать..
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 19:31  [ТС] 11
Вот только с 10-ю условиями программа работает не правильно..
0
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
15.12.2008, 19:38 12
код в студию, поглядим чего там как)
и с 10 условиями имхо бред, давай лучше с массивом, а?
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
15.12.2008, 20:09  [ТС] 13
В том то и дело, что с массивом нельзя...а с 10-ю условия код получается слишком большой, если писать вот так
C++
1
2
3
4
while (c!='a')//а-некоторая цифра
{
  с=getchar();
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
15.12.2008, 23:53 14
с массивом, т.к. даже если без массива, всё равно 10 переменных создавать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
#include <ctype.h>
 
/* проверяет есть ли цифры не встречающиеся ни разу;
   для таблиц символов где 0123456789 */
main()
{
    int c, i, nums[10];
    
    for (i = 0; i < 10; nums[i] = 0, i++)
        ;
    while ((c = getchar()) != EOF)
        if (isdigit(c))
            nums[c-'0']++;
    for (i = 0; i < 10; i++) {
        if (nums[i] == 0)
            printf(" %d", i);
        if (i == 9)
            putchar('\n');
    }        
    return 0;
}
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
16.12.2008, 18:21  [ТС] 15
accept, мне не совсем понятно Ваше решение...

Вот моя последняя программа. как тут исправить ошибку?
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
#include <stdio.h>
#include <math.h>
 
 int list=123456789;
 
int intLen(int n)
{
int i=0;
while(n>0)
{
      n/=10;
      i++;
}
return i;
}
int intDigit(int n, int j)
{
      return (int)(n-n*pow(10, j))%10;
}
 
int intDelDigit (int intDigit)
{
    int n, j;
    list=list-j*(int)pow(10, 9-j);
    return list;
}
 
int main()
{
 
    int n, i, j;
    scanf("%d", &n);
    for(i=1; i<10; i++)
        for(int j=1; j<=intLen(n); j--)
            if(i==intDigit(n, j))
            {
                intDelDigit(intDigit(n,j));
                continue;
            }
            printf("%d", list);
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
17.12.2008, 03:10 16
C++
1
2
3
4
5
6
int intDigit(int n, int j)
{
    if (j > 1)
        n /= (int) pow(10, j-1);
    return n % 10;    
}
поправил, теперь она возвращает

intDigit(245, 3) вернёт 2

функция main в нормальном виде

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    int n, i, j;
    
    scanf("%d", &n);
    for (i = 1; i < 10; i++)
        for (j = 1; j <= intLen(n); j++) {
            if (i == intDigit(n, j)) {
                intDelDigit(intDigit(n, j));
                continue;
            }
        }    
    printf("%d\n", list);
    return 0;
}
удаление из list я бы его переделал наоборот в 987654321, тогда можно было бы нули вставлять а может даже отнимать от числа чтобы потом оно без нулей вывелось, иначе нужен алгоритм удаления любой цифры из числа
0
0 / 0 / 0
Регистрация: 14.12.2008
Сообщений: 21
17.12.2008, 21:13  [ТС] 17
Всем спасибо)) Все получилось)))
0
17.12.2008, 21:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2008, 21:13
Помогаю со студенческими работами здесь

Отобрать слова, встречающиеся в последовательности по 1 разу
дана последовательность до 50 слов размером до 7 букв, надо отобрать слова встречающиеся в нем по 1...

Вывести слова, встречающиеся в тексте по одному разу
C++ Вывести слова, встречающиеся в тексте по одному разу.... подскажите мысль...или все чем можете...

Вывести слова, встречающиеся в тексте по одному разу
3. Дан текст. Вывести слова, встречающиеся в тексте по одному разу.( Дан текст. Вывести символы,...

Вывести слова, встречающиеся в тексте по одному разу
1. Написать программу, которая вводит текст, состоящий из нескольких предложений, и выводит на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru