Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Bloodykeeper
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
1

Найти число, если известен результат вычислений с ним

03.10.2009, 11:42. Просмотров 800. Ответов 6
Метки нет (Все метки)

Кароче есть вот такая задача:
дано число N (тоесть его нужно ввести с клавиатуры), число N должно быть больше 0. Это N-степень числа 2 (двойки). Также известно, что N=2 в степени К (N=pow(2,K). Найти К.
С оператором While она решалась так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#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. Я пробовал так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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, помогите найти ошибку ^^
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2009, 11:42
Ответы с готовыми решениями:

Найти число, зная результат операций с ним
В трехзначном числе зачеркнули первую цифру слева. Когда полученное двузначное число умножили на 7,...

Найти число, если известен результат вычислений с ним
При делении на 7 двойной суммы неизвестного числа и при делении на 8 в части получили 4, а в нацело...

Найти число, зная результат операции с ним
С Трех значительного числа х отняли его последнюю цифру.Колы результат разделили на 10, а к...

Найти число, зная результат операций с ним
в трехзначном числе х зачеркнули его вторую цифру. Когда к образованному при этом двузначному числу...

Найти число, зная результат операции с ним
Из трёхзначного числа X вычли его последнюю цифру. Когда результат разделили на 10, а к частному...

6
Monte-Cristo
2797 / 1386 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.10.2009, 11:47 2
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
if(pow(2,K)==N);
Это первая

C++
1
if(pow(2,K)==N) {
1
R0mm
Псевдо программист
192 / 113 / 37
Регистрация: 19.09.2009
Сообщений: 303
03.10.2009, 11:49 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#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
Monte-Cristo
2797 / 1386 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.10.2009, 11:51 4
Цитата Сообщение от Bloodykeeper Посмотреть сообщение
while(pow(2,K)<N);
это вторая...
так должно быть:

C++
1
} while(pow(2,K)<N);
Добавлено через 1 минуту
p.s: а вообще, применяй красивый тип оформления - печати кода - чтобы все вложенный блоки было видно, и тогда кол-во ошибок уменьшится.
1
kravam
быдлокодер
1711 / 898 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
03.10.2009, 11:54 5
Bloodykeeper, тебе тут конечно, подскажут... Я же скажу вот что.
Не пренебрегай скобками в угоду лаконичности кода. Рано тебе ещё пренебрегать.
Пиши
C++
1
2
3
4
5
6
7
do {
 if () {
 }
 else {
 }
}
while ()

Только так. Вот выполняется по условию ОДНА операция- всё равно ставь фигурные скобки. Потом посмотрел- разобрался.
Иначе всегда такие вопросы будешь задавать.
...Так-то мне не жалко, я могу сказать. Но надо чтобы в коня корм был
0
Monte-Cristo
2797 / 1386 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
03.10.2009, 11:57 6
Bloodykeeper, а вообще, здесь рациональней применять циклический сдвиг вправо (учитывая специфику хранения чисел - степеней двойки в двоичном коде), для получения наибыстрейшего кода.
0
Bloodykeeper
This party getting crazy!
78 / 64 / 1
Регистрация: 22.09.2009
Сообщений: 427
03.10.2009, 12:15  [ТС] 7
спасибо, а то я немного запутался)
0
03.10.2009, 12:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2009, 12:15

Вывести одно целое число - результат вычислений.С++
Одна строка, в которой могут встречаться цифры и символы «+» и «-». Длина строки не превышает 10000...

Определить число, зная результат действий с ним
1. Разработать алгоритм и представить его в виде схемы; 2. Написать программу на языке...

Найти окно, если известен ID и хэндл процесса
Можно ли найти окно, принадлежащее определённому процессу (хэндл и ID процесса известны)?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru