Перевести программу с C++ - C (СИ) (76477)
Формулировка задачи:
помогите перевести программу из с++ в с
#include <iostream> #include <cmath> int Del(int &n){ n=std::abs(n); int rez=0; int o; int b=1; while(n){ o=n%10; if(o%3){ rez+=o*b;b*=10;} n/=10; } return n=rez; } int main(){ const int size=5; int arr[size]={23532,658,96756,9089,12343698}; for(int i=0;i<size;++i){ std::cout<<"arr["<<i<<"]\t=\t"<<Del(arr[i])<<std::endl; } std::cin.get(); return 0; }
Решение задачи: «Перевести программу с C++»
textual
Листинг программы
#include <stdio.h> #include <math.h> int Del(int *n) { *n = abs(*n); int rez = 0; int o; int b = 1; while(*n){ o=*n%10; if(o%3){ rez+=o*b;b*=10;} *n/=10; } return *n=rez; } int main(void){ int i; int arr[]={23532,658,96756,9089,12343698}; for(i=0;i<(sizeof(arr) / sizeof(*arr));++i){ printf("%d \t %d\n", i, Del(&(arr[i]))); } return 0; }
Объяснение кода листинга программы
- Программа переводит число в его абсолютное значение.
- Инициализирует переменные rez и b, а также переменную o.
- Цикл while считывает каждую цифру числа.
- Переменная o получает последнюю цифру числа.
- Если o делится на 3, то прибавляет o умноженное на b к rez и затем умножает b на 10.
- Делится на 10 и сбрасывает значение o.
- Цикл продолжается, пока число не станет равным нулю.
- Возвращает rez в качестве результата.
- В функции main программа инициализирует массив arr с пятью числами.
- Использует цикл for для перебора всех элементов массива.
- Вызывает функцию Del на каждом элементе массива и выводит результат.
- Возвращает 0, завершая программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д