Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2012, 21:15   #1
dimanfanat
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 12
По умолчанию Определить , является ли заданное число степенью тройки

Написать на С++ программу, которая определяет , является ли заданное число степенью тройки. Помогите пожалуйста, в С++ я новичок, есть данная программа на Паскале:
Код:
var
n:=integer;
begin;
readln(n);
while n>1 do begin
if n mod 3 =1 or 2 then break;
n:=n div 3
end;
writeln(n=1)
end.
нужно написать ее на C++

Последний раз редактировалось Stilet; 21.12.2012 в 16:33.
dimanfanat вне форума Ответить с цитированием
Старый 20.12.2012, 21:24   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

ОК. Как Вы, человек, будете определять, является ли число степенью 3?
Abstraction вне форума Ответить с цитированием
Старый 20.12.2012, 21:27   #3
dimanfanat
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 12
По умолчанию

Многократным делением на 3
dimanfanat вне форума Ответить с цитированием
Старый 20.12.2012, 21:35   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Многократным делением на 3
До... *цензура!* 10 символов!
До единицы, так?
То есть, программа действий:
Код:
//Получить число
//И, пока оно не стало равно 1
  //Посмотреть, делится ли оно на 3; если не делится - 
    //доложить об обломе
    //и на этом закончить.
  //Ну, а если делится - поделить
  //и продолжить

//Раз число стало равно 1 - значит, мы делили-делили и доделились
//Сообщаем об успехе
//и заканчиваем
Каждая строка комментариев соответствует некоторой строке кода на языке C++. Попробуйте их написать (комментарии оставьте).
Abstraction вне форума Ответить с цитированием
Старый 20.12.2012, 21:40   #5
dimanfanat
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 12
По умолчанию

#include "stdafx.h"
#include "iostream"
#include "conio.h"
usingnamespace std;
int main()
{int m;
while(m>1);
if m mod 3=1 or 2 then break;
m:=m div 3;
}

я написал такую вот программу, знаю , что она не правильна, подскажите пожалуйста ошибки
dimanfanat вне форума Ответить с цитированием
Старый 20.12.2012, 21:43   #6
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Цитата:
Сообщение от dimanfanat Посмотреть сообщение
#include "stdafx.h"
#include "iostream"
#include "conio.h"
usingnamespace std;
int main()
{int m;
while(m>1);
if m mod 3=1 or 2 then break;
m:=m div 3;
}

я написал такую вот программу, знаю , что она не правильна, подскажите пожалуйста ошибки
Вы программу пишите на паскале или на си, вы уж как-то определились бы.
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com
kventin_zhuk вне форума Ответить с цитированием
Старый 20.12.2012, 21:45   #7
dimanfanat
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 12
По умолчанию

в том - то и дело , что на Си я первый раз пишу
dimanfanat вне форума Ответить с цитированием
Старый 20.12.2012, 21:58   #8
kventin_zhuk
БНТУ ФИТР
Форумчанин
 
Аватар для kventin_zhuk
 
Регистрация: 20.05.2012
Сообщений: 315
По умолчанию

Немножко переделал, не критично?
Код:
#include "iostream"
#include "conio.h"
using namespace std;
void main()
{
	int m;
	cin >> m;
	if (m < 3)
	{
		cout << "NO" << endl;
		return;
	}
	while(m != 1)
	{
		if (m % 3 != 0)
		{
			cout << "NO"<< endl;
			return;
		}
		m = m / 3;
	}
	cout << "Yes" << endl;
}
С++(console/builder/WinAPI/Linux), C#, Pascal, Delphi, Asm, Prolog.
< ----- Контакты
kventin_zhuk@live.com

Последний раз редактировалось kventin_zhuk; 20.12.2012 в 22:04.
kventin_zhuk вне форума Ответить с цитированием
Старый 21.12.2012, 16:03   #9
dimanfanat
Пользователь
 
Регистрация: 15.11.2012
Сообщений: 12
По умолчанию

Не работает ваша программа
dimanfanat вне форума Ответить с цитированием
Старый 21.12.2012, 16:10   #10
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
if (m < 3)
1 - степень 3. Это условие вообще не нужно. Ну, или заменить его на m<=0.

В остальном - должно работать. На каких данных не работает?
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивная функция, определяющая, является ли заданное натуральное число простым edikesh Помощь студентам 1 12.12.2011 00:56
Рекурсивная функция, определяющая, является ли заданное натуральное число простым edikesh Помощь студентам 2 12.12.2011 00:38
Определить являится ли заданное число N автоморфорным investr Microsoft Office Word 0 07.12.2011 15:44
как проверить, , является ли натуральное число k степенью 3 rager06 Паскаль, Turbo Pascal, PascalABC.NET 6 21.05.2011 17:50
является ли заданное натуральное число совершенным Савинова Помощь студентам 3 19.11.2008 09:51