Найти число, если известен результат вычислений с ним - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Кароче есть вот такая задача:
дано число N (тоесть его нужно ввести с клавиатуры), число N должно быть больше 0. Это N-степень числа 2 (двойки). Также известно, что N=2 в степени К (N=pow(2,K). Найти К.
С оператором While она решалась так:
#include <stdio.h>
#include <conio.h>
#include <math.h>`
void main() {
   int K=1,N;
   printf("Enter N\n");
   scanf("%d",&N);
   if(N>0)
   while(pow(2,K)<N)
   {K++;
   if(pow(2,K)==N)
   {
   printf("K=%d\n",K);
   break;
   }
   }
   getch();
}
а мне нужно теперь переделать её под Do While. Я пробовал так:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main() {
   int K=1,N;
   printf("Enter N\n");
   scanf("%d",&N);
   if(N>0)
       do {K++;
       if(pow(2,K)==N);
       printf("K=%d\n",K);
       break;}
   while(pow(2,K)<N);
       
   getch();
}
тоесть заключил тело между do и while. Но в этом варианте К всегда = 2, помогите найти ошибку ^^

Решение задачи: «Найти число, если известен результат вычислений с ним»

textual
Листинг программы
#include "stdafx.h"
#include <stdio.h>
#include "conio.h"
#include <math.h>
void main() {
   float N;
   int K(-1);
   printf("Enter N\n->");
   scanf("%f",&N);
   do{
        K++;
   }
   while(pow(2.0, double(K))!=N)
   printf("K=%d\n",K);
   getch();
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек: stdafx.h, stdio.h, conio.h, math.h.
  2. Объявление переменных:
    • N (типа float), в которую будет сохранено искомое число;
    • K (типа int), которая будет использоваться для вычисления степени числа 2.
  3. Вывод сообщения с просьбой ввести число N.
  4. Считывание числа N с помощью функции scanf в переменную N.
  5. Введение цикла do-while, который будет выполняться до тех пор, пока возведение числа 2 в степень K (сначала приведенное к типу double) не будет равно числу N.
  6. Внутри цикла увеличение значения переменной K на 1.
  7. После выхода из цикла вывод значения переменной K.
  8. Вызов функции getch для приостановки выполнения программы до тех пор, пока пользователь не нажмет какую-либо клавишу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы