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

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

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

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

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

textual
Листинг программы
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include "conio.h"
  4. #include <math.h>
  5. void main() {
  6.    float N;
  7.    int K(-1);
  8.    printf("Enter N\n->");
  9.    scanf("%f",&N);
  10.    do{
  11.         K++;
  12.    }
  13.    while(pow(2.0, double(K))!=N)
  14.    printf("K=%d\n",K);
  15.    getch();
  16. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы