Другие языки программирования и технологии

Программирование на языке Си. Нужна небольшая помощь.

Завтра в универе надо сдать лабу, а у меня не получается написать последнюю программу.


Вот, собственно, задача, по которой нужно написать программу:


Дано натуральное число n. Сформировать из числа n число m, удалив цифры 0 и 5 из записи числа n, оставив прежним порядок цифр в числе n.


Например: n = 1580, m = 18.


Написать программу надо с помощью циклов.


(Писать не на языке Си++, а на простом Си)


Заранее спасибо за помощь.
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <tchar.h>

#define DBUF 0x5DC0
#define SBUF 0xB

void remove_digit(char*, char*);

int main() {
    char number[DBUF] = "";
    char suite[SBUF] = "";
    SetConsoleTitle(_T("Программа"));
    printf(" Number: ");
    scanf_s("%s", number, _countof(number));
    printf(" Suite: ");
    fflush(stdin);
    scanf_s("%s", suite, _countof(suite));
    remove_digit(number, suite);
    printf(" Result: %s\n", number);
    fflush(stdin);
    getchar();
    return 0;
}

void remove_digit(char* number, char* suite) {
    char tmp[DBUF] = "";
    int n, m, k, flag;
    for (n = m = 0; number[n] != 0; ++n) {
        flag = 1;
        if (!isdigit(number[n])) {
            number[0] = 0;
            break;
        }
        for (k = 0; suite[k] != 0; ++k) {
            if (!isdigit(suite[k])) continue;
            if (number[n] == suite[k]) {
                flag = 0;
                break;
            }
        }
        if (flag) {
            tmp[m++] = number[n];
        }
    }
    strcpy_s(number, DBUF, tmp);
    number[m] = 0;
}
Рафаэль Байрамов
Рафаэль Байрамов
88 073
Лучший ответ
Простая задача, пусть а вводимое число, а число b результат вывода:
temp = a;
mnog = 1;
b = 0;
while ( temp/10 != 0)
{
if ( temp % 10 != 8)
if (temp !=5)
b = b + mnog*temp;
mnog *= mnog*10;
temp = temp/10;
}
сделай цикл, бери в цикле остаток от деления числа n на 10, например 1580 mod 10 будет 0, значит это число пропускаем, делим 1580 на 10, получаем 158, теперь 158 mod 10 остаток будет 8, это число подходит, умножаем на 1, и так далее, только число на которое умножаем однозначное число нужно увеличивать после каждой успешной итерации на 1, чтобы при сложении они образовывали десятки, сотни тысячи и т. д
Серега Воздвиженский ой, число не увеличивать на 1, а в 10 раз