Ввести целое число N, вывести ближейшую к N степень числа 2 - C (СИ)
Формулировка задачи:
Ввести целое число N, вывести ближейшую к N степень числа 2.
Здравствуйте, можно переделать код СИ ++ на СИ, и указать на ошибки, если они имеются ( а они имеются, т.к. у меня она работает через раз -_-)
#include <iostream> #include <math.h> using namespace std; int main() { int n,j,a,b,x,y; cout<<"Enter N: "; cin>>n; a=0; b=0; for(j=1;j<9999;j++) { if(pow(2,j-1)<=n && pow(2,j)>=n) { a=j-1; b=j; } if(b!=0) break; } x=abs(pow(2,a)-n); y=pow(2,b)-n; if(x<y) cout<<"2 in"<<a<<endl; else cout<<"2 in"<<b<<endl; system("pause"); getch(); return 0; }
Решение задачи: «Ввести целое число N, вывести ближейшую к N степень числа 2»
textual
Листинг программы
/*Ввести целое число N, вывести ближайшую к N степень числа 2. */ #include <stdio.h> #include <math.h> int main() { int min, max, num; printf("N = "); scanf("%d", &num); fflush(stdin); min = floor(log(1.*num) / log(2.)); max = ceil(log(1.*num) / log(2.)); printf("Nearest power: %d", num - pow(2.,min) > pow(2.,max) - num ? max : min); getchar(); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы сprintf, scanf и математическими функциями
- Объявляем переменные min, max и num типа int
- Выводим запрос на ввод числа N с помощью функции printf
- Считываем число N с помощью функции scanf и сохраняем его в переменную num
- Используем функцию fflush для очистки буфера ввода
- Вычисляем ближайшую степень числа 2 к N с помощью функций log и pow
- Присваиваем значения переменным min и max
- Выводим ближайшую степень числа 2 к N на экран с помощью функции printf
- Ждем нажатия любой клавиши с помощью функции getchar
- Завершаем программу с кодом 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д