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

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

Восстановить пароль Регистрация
 
Помогите
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 17
26.06.2014, 00:47     Определить, является ли введенное число степенью тройки, если да - то какой #1
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2014, 00:47     Определить, является ли введенное число степенью тройки, если да - то какой
Посмотрите здесь:

C++ While4°. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести true, если не является — вывести false.
Определить является ли число к степенью 3 C++
C++ как проверить цифру, на то что она является степенью тройки
Дано целое число N(>0). Если оно является степенью числа 3, то вывести TRUE, если не является-вывести FALSE. C++
C++ Определить, является ли натуральное число k степенью числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sapendo
5 / 5 / 3
Регистрация: 13.05.2014
Сообщений: 130
26.06.2014, 00:50     Определить, является ли введенное число степенью тройки, если да - то какой #2
Задание напиши!
Помогите
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 17
26.06.2014, 00:51  [ТС]     Определить, является ли введенное число степенью тройки, если да - то какой #3
Определить, является ли введенное число степенью тройки, если – да, то какой. Функцию для возведения в степень не использовать.
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";
    }
}
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1868 / 1664 / 580
Регистрация: 14.05.2014
Сообщений: 4,780
Записей в блоге: 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;
}
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";
}
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
26.06.2014, 06:27     Определить, является ли введенное число степенью тройки, если да - то какой #7
Sapendo,

enter number: 10
10 = 3^2
Байт
 Аватар для Байт
14010 / 8841 / 1234
Регистрация: 24.12.2010
Сообщений: 16,022
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";
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");
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";
}
На ваше рассуждение))))))
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,211
Завершенные тесты: 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;
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
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
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 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 в степени, о чем и говорим.
gru74ik
Модератор
 Аватар для gru74ik
3131 / 1357 / 168
Регистрация: 20.02.2013
Сообщений: 3,877
Записей в блоге: 18
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;
}
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
26.06.2014, 21:51     Определить, является ли введенное число степенью тройки, если да - то какой #15
zss, в цикле надо поставить условие "строго меньше", ну и еще с 1 твой код не пашет
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 1
26.06.2014, 21:59     Определить, является ли введенное число степенью тройки, если да - то какой #16
gru74ik, я еще не сильно разбирался з значением, возвращаемым main(). Как я понял он нужен для отлова исключений. Тут же такая проверка не предусмотрена, потому проще надать main() тип void.

Добавлено через 1 минуту
Цитата Сообщение от gru74ik Посмотреть сообщение
else
* * * * * * break;
тут вот так должно быть
C++
1
else {i=0; break;}
иначе 6 будет считать 3 в 1ой, что неверно.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11848 / 6827 / 772
Регистрация: 27.09.2012
Сообщений: 16,929
Записей в блоге: 2
Завершенные тесты: 1
26.06.2014, 21:59     Определить, является ли введенное число степенью тройки, если да - то какой #17
Цитата Сообщение от EfimKR Посмотреть сообщение
потому проще надать main() тип void.
в стандарте нет прототипа main с void, так что реализация может его смело не поддерживать. А чтобы было легче, в конце main можно не писать return 0;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.06.2014, 22:01     Определить, является ли введенное число степенью тройки, если да - то какой
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 212
Записей в блоге: 1
26.06.2014, 22:01     Определить, является ли введенное число степенью тройки, если да - то какой #18
Возможно с main() возник вопрос, потому что у тебя компилятор по другому работает.

Добавлено через 47 секунд
Croessmah, тогда всё понятно.
Yandex
Объявления
26.06.2014, 22:01     Определить, является ли введенное число степенью тройки, если да - то какой
Ответ Создать тему
Опции темы

Текущее время: 16:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru