Найти число, если известен результат вычислений с ним - C (СИ)
Формулировка задачи:
Кароче есть вот такая задача:
С оператором While она решалась так:
а мне нужно теперь переделать её под Do While. Я пробовал так:
тоесть заключил тело между do и while. Но в этом варианте К всегда = 2, помогите найти ошибку ^^
дано число N (тоесть его нужно ввести с клавиатуры), число N должно быть больше 0. Это N-степень числа 2 (двойки). Также известно, что N=2 в степени К (N=pow(2,K). Найти К.
#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();
}#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();
}Решение задачи: «Найти число, если известен результат вычислений с ним»
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();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек:
stdafx.h,stdio.h,conio.h,math.h. - Объявление переменных:
- N (типа float), в которую будет сохранено искомое число;
- K (типа int), которая будет использоваться для вычисления степени числа 2.
- Вывод сообщения с просьбой ввести число N.
- Считывание числа N с помощью функции scanf в переменную N.
- Введение цикла do-while, который будет выполняться до тех пор, пока возведение числа 2 в степень K (сначала приведенное к типу double) не будет равно числу N.
- Внутри цикла увеличение значения переменной K на 1.
- После выхода из цикла вывод значения переменной K.
- Вызов функции getch для приостановки выполнения программы до тех пор, пока пользователь не нажмет какую-либо клавишу.