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

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

Войти
Регистрация
Восстановить пароль
 
 
Помогите
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 17
#1

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

26.06.2014, 00:47. Просмотров 914. Ответов 17
Метки нет (Все метки)

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
#include <stdio.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{int n,i,s=3;
 printf("Vvedite 4islo ");
 scanf("%i",&n);
 if(n==0){printf("ERROR");getch(); return 0;}
 if(n==1){printf("4islo naxoditsa v 0 stepeni troiki");getch(); return 0;}
 if(n==3){printf("4islo naxoditsa v 1 stepeni troiki");getch(); return 0;}
 for(i=1;i<n;i++)
 {
  s=s*3;
  if(s==n){printf("4islo naxoditsa v %i stepeni troiki",i+1);getch();return 0;}
  if(s>n){printf("4islo ne naxoditsa nivkakoi stepeni troiki");getch();return 0;}
 }
 getch();
 return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2014, 00:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, является ли введенное число степенью тройки, если да - то какой (C++):

Определить, является ли введённое натуральное число целой степенью тройки - C++
Определить, является ли введённое натуральное число целой степенью числа 3

While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести true, если не является — вывести false. - C++
While. Дано целое число N (&gt; 0). Если оно является степенью числа 3, то вывести true, если не является — вывести false.

Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. - C++
Дано целое число N(&gt;0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. Я не могу записать её с...

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

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

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

17
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
26.06.2014, 00:50 #2
Задание напиши!
0
Помогите
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 17
26.06.2014, 00:51  [ТС] #3
Определить, является ли введенное число степенью тройки, если – да, то какой. Функцию для возведения в степень не использовать.
0
vovacreme
-16 / 61 / 13
Регистрация: 14.01.2014
Сообщений: 145
26.06.2014, 01:25 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    double num;
    cout << "enter number: ";
    while ( cin >> num )
    {
        unsigned count = 1;
        while ( num  > 3 )
        {
            ++count;
            num /= 3.0;
        }
        num == 3.0 ? cout << "YES( " << count << " )\n" : cout << "NO\n";
    }
}
1
Kerry_Jr
Модератор
Эксперт PHP
2201 / 1997 / 700
Регистрация: 14.05.2014
Сообщений: 5,856
Записей в блоге: 1
Завершенные тесты: 5
26.06.2014, 01:27 #5
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
#include <stdio.h>
#include <conio.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
    int n, s = 3, i = 2;
    printf("Vvedite chislo: ");
    scanf("%i", &n);
    if (n <= 3)
        switch (n)
        {
            case 0: printf("ERROR"); break;
            case 1: printf("Chislo yavl'ayets'a nulevoi stepenyu troyki"); break;
            case 2: printf("Chislo ne yavl'ayets'a stepenyu troyki"); break;
            case 3: printf("Chislo yavl'ayets'a pervoi stepenyu troyki"); break;
        }
    else if (n > 3)
        while (1)
        {
            s *= 3;
            if (s == n) { printf("Chislo yavl'ayets'a %i stepenyu troyki", i); break; }
            else if (s > n) { printf("Chislo ne yavl'ayets'a stepenyu troyki"); break; }
            i++;
        }
    
    getch();
    return 0;
}
0
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
26.06.2014, 01:51 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    int num, num1;
    cout << "enter number: ";
    cin >> num;
    num1 = num;
    int count = 1;
        while ( num1  > 3 )
        {
            ++count;
            num1 /= 3;
        }
        if (num1 == 3)
            cout << num << " = " << 3 << "^" <<count << "\n";
        else
            cout << "The number 3 is not in the power\n";
}
0
uglyPinokkio
326 / 229 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 06:27 #7
Sapendo,

enter number: 10
10 = 3^2
0
Байт
Эксперт C
16141 / 10419 / 1552
Регистрация: 24.12.2010
Сообщений: 19,726
26.06.2014, 09:22 #8
C++
1
2
3
4
5
int n;
for(count=0; n>1; n/=3, count++) 
 if (n%3) break;
if (n>1) cout <<"The number 3 is not in the power\n";
else cout << n << " = " << 3 << "^" <<count << "\n";
1
Trwsdf
Заблокирован
26.06.2014, 15:47 #9
C++
1
2
 float init;  
    cout<<((std::modf(std::log((cin>>init,init))/std::log(3),&init)==0)?"yes":"no");
0
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
26.06.2014, 19:43 #10
Да действительно прогнал((((( Извиняюсь!
Тогда можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
void main()
{
    const unsigned long N=100;
    unsigned long mas [N];
    int num, c, element;
    cout << "enter number: ";
    cin >> num;
    for (int i=1; i<N; i++)
    {
        mas[i]=pow(3,i);
        if (mas[i]==num)
            c=1;
        element=i;
    }
        if (c==1)
            cout << "\n" <<num << " = " << 3 << "^" << element<<"\n";
        if(c!=1)
            cout << "\nThe number is not a power 3\n";
}
На ваше рассуждение))))))
0
zss
Модератор
Эксперт С++
6403 / 5969 / 1945
Регистрация: 18.12.2011
Сообщений: 15,370
Завершенные тесты: 1
26.06.2014, 21:18 #11
А можно и так
C++
1
2
3
4
5
6
7
int n,count;cin>>n;
for(count=3;count<=n;count*=3)
          ; 
if (count!=n) 
    cout <<"The number 3 is not in the power"<<n<<endl;
else 
    cout <<"The number 3 is in the power"<<n<<endl;
0
gru74ik
Модератор
Эксперт CЭксперт С++
4168 / 1816 / 198
Регистрация: 20.02.2013
Сообщений: 4,953
Записей в блоге: 21
26.06.2014, 21:38 #12
Цитата Сообщение от zss Посмотреть сообщение
А можно и так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
    int n, count;
    cin >> n;
    for (count = 3; count <= n; count *= 3);
    if (count != n)
        cout << "The number 3 is not in the power" << n << endl;
    else
        cout << "The number 3 is in the power" << n << endl;
    return 0;
}
Или я что-то недопонимаю, или код работает не так, как задумывалось.
В ответ на ввод любых цифр выдаёт The number 3 is not in the power
0
EfimKR
53 / 26 / 10
Регистрация: 24.06.2014
Сообщений: 229
Записей в блоге: 1
26.06.2014, 21:42 #13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;
void main()
{
    setlocale(LC_CTYPE, "Russian");
    int num, i=0;
    cout<<"Введите число\t";
    cin>>num;
    int n=num;
    while(n>1)
    {
        if (n%3==0)
        {
        i++;
        n/=3;
        }
        else {i=0; break;}
    }
    if (i==0) cout<<"\nЧисло "<<num<<" не является степенью тройки\n";
    else cout<<"\nЧисло "<<num<<" является тройкой в степени "<<i<<"\n";;
}
Добавлено через 2 минуты
Проверяем делится ли число нацело на 3, если да наращиваем счётчик степени если нет прерываем цикл.
Если степень осталась 0, значит число не является 3 в степени, о чем и говорим.
1
gru74ik
Модератор
Эксперт CЭксперт С++
4168 / 1816 / 198
Регистрация: 20.02.2013
Сообщений: 4,953
Записей в блоге: 21
26.06.2014, 21:49 #14
Цитата Сообщение от EfimKR Посмотреть сообщение
void main()
int же и в конце return 0;

А так да, вполне рабочий код. Хотя русский язык у меня в консоли не отобразился.
А вот так, вполне:
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
#include <iostream>
#include <windows.h>
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    int num, i=0;
    cout << "Введите число: ";
    cin >> num;
    int n = num;
 
    while(n > 1)
    {
        if (n % 3 == 0)
        {
            i++;
            n /= 3;
        }
        else
            break;
    }
    if (i == 0)
        cout << "\nЧисло " << num << " не является степеню тройки\n";
    else
        cout << "\nЧисло " << num << " является тройкой в степени " << i << "\n";
    return 0;
}
0
SlavaSSU
215 / 160 / 45
Регистрация: 17.07.2012
Сообщений: 587
26.06.2014, 21:51 #15
zss, в цикле надо поставить условие "строго меньше", ну и еще с 1 твой код не пашет
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2014, 21:51
Привет! Вот еще темы с ответами:

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

Определить, является ли число степенью двойки - C++
По заданному положительному числу n &lt; 2^64 определить, является ли оно степенью двойки. Решение должно иметь сложность O(1). 1 ...

Определить, является ли число степенью двойки - C++
Такая проблема: в проге мне нужно задать количество чисел которые я введу (т.е создать массив под них), потом ввести числа и оно должно мне...

Рекурсия: вывести слово Yes, если число N является точной степенью двойки, иначе - No - C++
Дано натуральное число N. Вывести слово YES, если число N является точной степенью двойки, или слово NO в противном случае. При решении...


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

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

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