Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
1

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

05.12.2013, 16:45. Просмотров 1035. Ответов 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
Ответы с готовыми решениями:

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

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

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

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

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

33
rescr1pt
34 / 35 / 6
Регистрация: 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
34 / 35 / 6
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 17:09 4
Цитата Сообщение от maxim12345 Посмотреть сообщение
flag,true, falce - что это такое?
булевая переменная, которая будет возвращать отрицательное значение, если n'число не делится на 5.
1
Байт
Эксперт C
18968 / 12178 / 2545
Регистрация: 24.12.2010
Сообщений: 24,847
05.12.2013, 17:12 5
Цитата Сообщение от maxim12345 Посмотреть сообщение
falce
false - ложь. true - истина (правда) flag - введенная (объявленная) авторм программы логическая (булевая) переменная

Добавлено через 1 минуту
Цитата Сообщение от rescr1pt Посмотреть сообщение
булевая переменная, которая будет возвращать отрицательное значение
Простите, как это?
1
egor2116
572 / 376 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
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
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,853
05.12.2013, 17:17 7
rescr1pt,
а ты уверен что чтобы узнать пятая ли степень числа нужно делить на 5?
например число 32 =25
ну ни как на пять не делится
2
Байт
Эксперт C
18968 / 12178 / 2545
Регистрация: 24.12.2010
Сообщений: 24,847
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
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,853
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
572 / 376 / 215
Регистрация: 20.01.2013
Сообщений: 1,135
05.12.2013, 17:25 12
например число 32 =25
ну ни как на пять не делится
а Вы попробуйте )))
std::cout << 32 / 5;
1
Байт
Эксперт C
18968 / 12178 / 2545
Регистрация: 24.12.2010
Сообщений: 24,847
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
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,853
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
34 / 35 / 6
Регистрация: 03.10.2011
Сообщений: 61
05.12.2013, 17:36 15
Цитата Сообщение от Байт Посмотреть сообщение
Простите, как это?

Не по теме:

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


А о задаче я не додумал.
1
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
05.12.2013, 17:41  [ТС] 16
мне это нужно будет переписать на язык нашего препода) он очень похож на паскаль, поэтому по возможности бы как заменить циклы на while P.S. с "языком препода" не смейтесь сильно)
0
Байт
Эксперт C
18968 / 12178 / 2545
Регистрация: 24.12.2010
Сообщений: 24,847
05.12.2013, 17:44 17
Цитата Сообщение от maxim12345 Посмотреть сообщение
"языком препода"
Придется просить новый раздел открывать
2
maxim12345
2 / 2 / 0
Регистрация: 28.09.2013
Сообщений: 72
05.12.2013, 17:45  [ТС] 18
как можно вот тот код без умножения реализовать? его нельзя использовать
0
Байт
Эксперт C
18968 / 12178 / 2545
Регистрация: 24.12.2010
Сообщений: 24,847
05.12.2013, 17:49 19
Цитата Сообщение от maxim12345 Посмотреть сообщение
без умножения реализовать?
C
1
for(p=j=0; j< i ; j++) p+=i;
Получится i*i
И так еще 2-3 раза...
1
ValeryS
Модератор
7317 / 5559 / 704
Регистрация: 14.02.2011
Сообщений: 18,853
05.12.2013, 17:50 20
Цитата Сообщение от maxim12345 Посмотреть сообщение
возможности бы как заменить циклы на while
ну вот тебе решение, по мотивам Байт,
C++
1
2
3
4
5
6
7
8
9
10
11
12
int k=1;
bool flag=false;
while(k*k*k*k*k<=n)
{
  if(k*k*k*k*k==n)
  {
  flag=true;
  break; 
  }
k++;
}
printf (flag ? "Yes" : "No");
1
05.12.2013, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 17:50

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

Является ли число степенью десятки
Дано целочисленное число. Проверить является ли оно степенью десяти.

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


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

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

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