Ввести целое число 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д