Для каждого числа исходной последовательности удалить из записи числа все цифры, большие 5 - C (СИ)
Формулировка задачи:
Написать программу.
Дана последовательность из n натуральных чисел.
Для каждого числа исходной последовательности удалить из записи числа все цифры, большие 5, и подсчитать количество цифр в записи числа.
Сформировать новую последовательность, поместив в неё для каждого исходного числа два значения - преобразованное число и количество цифр в записи числа. Упорядочить новую последовательность попарно по возрастанию чисел. Вывести исходную и полученную последовательности на экран.
В программе использовать функцию, которая удаляет из записи числа все цифры, большие 5, и возвращает количество цифр в записи числа
Решение задачи: «Для каждого числа исходной последовательности удалить из записи числа все цифры, большие 5»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
const int N = 10;
int power(int x, int n)
{
int i, z = 1;
for(i = 0; i < n; ++i)
z *= x;
return z;
}
int main()
{
int arr[N];
int i, b, x, k, y, m = 0, n = 0;
for(i = 0; i < N; ++i){
arr[i] = rand() % INT_MAX;
printf("%d\t", arr[i]);
b = arr[i];
while(b > 0){
x = b % 10;
b = b / 10;
++n;
}
b = arr[i];
k = n - 1;
while(b > 0){
y = b / power(10, k);
b = b - y * power(10, k);
--k;
if(y <= 5){
printf("%d", y);
++m;
}
}
printf("\t%d\n", m);
n = 0;
m = 0;
}
return 0;
}
Объяснение кода листинга программы
В этом коде выполняются следующие действия:
- Включаются необходимые заголовочные файлы
- Задаются значения констант
- Определяется функция для возведения числа в степень
- В функции main() создается массив и инициализируется случайными числами
- Выполняется цикл по элементам массива
- Для каждого элемента выполняется следующее действие:
- Число делится на цифры, начиная с самой большой
- Цифры, большие 5, удаляются из числа
- Выводится количество цифр, меньших или равных 5
- После обработки каждого элемента массива, счетчики цифр и итераций сбрасываются в ноль