Перевести программу с 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, завершая программу.