Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
#1

Узнать является ли число пятой степенью. Помогите найти ошибку. - C++

05.12.2013, 16:45. Просмотров 915. Ответов 33
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
 
int main()
{
    int x,a,b,c,d;
    scanf("%d",&x);
    b=1;
    if(b==x)
    {
       d=1;
       printf("%d", d);
       return 0;
    }
 
    if (x<b)
    {
      d=0;
    }
 
 
    a=0;
 
    c=b;
    while (a<c)
    {
        b=b+1;
        a=a+1;
    }
 
    printf("%d", d);
 
 
 
 
}
попытался написать прогу, которая проверяет, является ли число пятой степенью, но получается бред какой-то. Помогите, пожалуйста. но использовать можно только прибавление 1, умножение и целочисленное деление
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 16:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Узнать является ли число пятой степенью. Помогите найти ошибку. (C++):

В целочисленном массиве найти и напечатать те элементы, которые являются степенью 2. Написать функцию, проверяющую, является ли число степенью 2. - C++
В целочисленном массиве найти и напечатать те элементы, которые являются степенью 2. Написать функцию, проверяющую, является ли число...

Помогите, ГОС экзамен! Является ли число степенью другого числа - C++
Нужно написать программу определения является ли натуральное число степенью какого-либо натурального числа. Вообще нужно написать на...

Определите, является ли число степенью числа 2, и если является, то выведите значение этой степени - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени / С++ для...

Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и если является, то выведите значение этой степени.

Является ли число степенью двойки - C++
Условие: Входные данные Входной файл INPUT.TXT содержит единственное целое число N, не превосходящее 10000 по абсолютной величине. ...

Является ли число степенью двойки - C++
Дано натуральное число n. Определите, является ли оно степенью числа 2, и выведете слово YES если является,и выведите слово NO если не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
rescr1pt
33 / 34 / 1
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 17:02 #2
является ли число пятой степенью
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
 
int main()
{
    cout<<"Enter n: ";
    int n;
    cin>>n;
    bool flag=true;
 
    while ((n>5)&&(flag))
    {
        if ((n % 5)==0) 
            n/=5;
        else 
            flag=false;  
    }
 
    if ((flag)&&(n%5==0)) 
        cout<<"Yes";
    else 
        cout<<"No";
 
    // pause
    cin.get();
    cin.get();
}
1
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
05.12.2013, 17:05  [ТС] #3
flag,true, falce - что это такое?
0
rescr1pt
33 / 34 / 1
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 17:09 #4
Цитата Сообщение от maxim12345 Посмотреть сообщение
flag,true, falce - что это такое?
булевая переменная, которая будет возвращать отрицательное значение, если n'число не делится на 5.
1
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
05.12.2013, 17:12 #5
Цитата Сообщение от maxim12345 Посмотреть сообщение
falce
false - ложь. true - истина (правда) flag - введенная (объявленная) авторм программы логическая (булевая) переменная

Добавлено через 1 минуту
Цитата Сообщение от rescr1pt Посмотреть сообщение
булевая переменная, которая будет возвращать отрицательное значение
Простите, как это?
1
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
05.12.2013, 17:15 #6
Как то так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
 int main()
 {
     float numeric, source;
     std::cout << "Input numeric: "; std::cin >> numeric;
     
     source = numeric;
     while(numeric > 1.0f)
        numeric /= 5;
     
     if(numeric == 1) 
        std::cout << source << " is degree 5" << std::endl;
     else
        std::cout << source << " is not degree 5" << std::endl;
     
     system("PAUSE");
     return 0;
 }
1
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
05.12.2013, 17:17 #7
rescr1pt,
а ты уверен что чтобы узнать пятая ли степень числа нужно делить на 5?
например число 32 =25
ну ни как на пять не делится
2
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
05.12.2013, 17:18 #8
Цитата Сообщение от rescr1pt Посмотреть сообщение
(n%5==0)
Вот тут надо здорово подумать. ИМХО, по приоритету сначала выполняется сравнение (5==0). Оно дает false = 0/. Потом вы будете делить на 0. Может быть я с приоритетами и путаю, но чтоб не было таких вопросов, рекомендуется писать
C
1
((n%5)==0)
Сам на эти грабли пару раз наступил, никому не советую...
0
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
05.12.2013, 17:19  [ТС] #9
Кстати, да. Помогите пожалуйста разрулить
0
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
05.12.2013, 17:20 #10
я бы попробовал как то так
C++
1
2
3
4
5
int tmp=pow(n,1.0/5.0);
if(tmp*tmp*tmp*tmp*tmp==n)
   printf("Yes");
else
   printf("No");
2
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
05.12.2013, 17:23  [ТС] #11
А можно это как то в более простом варианте, ибо я новичек, этого не понимаю, да и использовать можно только +1, целочисленное деление, остаток от деления

Добавлено через 1 минуту
а можно поподробнее, ибо я новичек и не понимаю еще этого, да и использовать можно только +1, целочисленное деление и остаток от деления
0
egor2116
339 / 370 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
05.12.2013, 17:25 #12
например число 32 =25
ну ни как на пять не делится
а Вы попробуйте )))
std::cout << 32 / 5;
1
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
05.12.2013, 17:28 #13
Цитата Сообщение от ValeryS Посмотреть сообщение
rescr1pt,
а ты уверен
Ну, то что код решает какую-то совсем другую задачу - это ясно.
C++
1
2
3
4
5
6
7
for(flag=i=0; ; i++) {
  k = i*i*i*i*i;
  if (k==n) {
    flag=1; break; }
  if k > n) break;
}
printf (flag ? "Yes" : "No");
Оформление (main, объявления переменных...) я оставил тебе
1
ValeryS
Модератор
6631 / 5038 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
05.12.2013, 17:34 #14
Цитата Сообщение от maxim12345 Посмотреть сообщение
А можно это как то в более простом варианте, ибо я новичек, этого не понимаю, да и использовать можно только +1, целочисленное деление, остаток от деления
интересно как ты узнаешь корень пятой степени оперируя только этими действиями
да и нет у меня ничего сложного
Цитата Сообщение от ValeryS Посмотреть сообщение
int tmp=pow(n,1.0/5.0);
берем корень пятой степени из числа n дробную часть отбрасываем (для этого есть int)
функция pow возводит число в степень, корень пятой степени это 1/5
дальше возводим полученное число в пятую степень
Цитата Сообщение от ValeryS Посмотреть сообщение
tmp*tmp*tmp*tmp*tmp
и сравниваем если полученное произведение равно первоначальному числу
значит первоначальное число является пятой степенью
например
32
корень 2
2*2*2*2*2 равно 32
является
33
корень
2.01232
целое 2
2*2*2*2*2 не равно 33
не является

Добавлено через 1 минуту
Цитата Сообщение от egor2116 Посмотреть сообщение
а Вы попробуйте )))
std::cout << 32 / 5;
и что на самом деле 6
1
rescr1pt
33 / 34 / 1
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 17:36 #15
Цитата Сообщение от Байт Посмотреть сообщение
Простите, как это?

Не по теме:

Поймали на слове. В риторическом случаи, false (0) отрицательное, true(1) положительное.
Оправдался считай


А о задаче я не додумал.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 17:36
Привет! Вот еще темы с ответами:

Определить является ли число k степенью 3 - C++
Определить является ли число k степенью 3. Помогите решить...

Определить является ли число к степенью 3 - C++
Определить является ли число к степенью 3.

Является ли число степенью двойки? - C++
Вводится число. Напечатать YES, если оно является степенью двойки, NO - иначе.

Проверить, является ли число степенью 3 - C++
Данное целое число N ( &gt; 0). Если оно есть степенно числа 3 , то вывести TRUE, если не является - вывести FALSE . С++


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.12.2013, 17:36
Ответ Создать тему
Опции темы

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