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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2016, 20:47   #1
Uourin
Пользователь
 
Регистрация: 29.03.2016
Сообщений: 16
По умолчанию Ошибка в задаче

Задача с классами, надо чтоб было 5 функций, они есть вот. А компилятор выводит только сокращение дробей, а надо чтоб и наибольший делитель, и сокращение и возведение в степень. Что не так в чем ошибка?
#include <iostream.h>
#include <math.h>
struct Frac{int P;int Q;}; //числитель,знаменатель
Frac F; //обращение через переменную
class Drob
{
Frac A;
public:
void Vvod(void); // 5 функций (методов); имя ф
int NOD(void);
void Sokr(void);
void Stepen(int N);
void Print(void);
};

void Drob::Vvod(void)
{
cout<<"chislitel'?";
cin>>A.P;
cout<<"znamenatel'?";
cin>>A.Q;
}
int Drob::NOD(void)
{ //нахождения наибольшего делителя
int M,N;
M=abs(A.P);
N=A.Q;
while(M!=N)
{
if(M>N)
if(M%N!=0) M=M%N; else M=N;
else if(N%M!=0) N=N%M; else N=M;
}
return M;
}
void Drob::Sokr(void)
{
int X;
X=NOD(); //наибольший общий делитель
if(A.P!=0) //не равно 0
{
A.P=A.P/X;
A.Q=A.Q/X;
}
else A.Q=1;
}
void Drob::Stepen(int N)
{
int i;
F.P=F.Q=1; //глобальные переменные
for(i=1;1<=N;i++)
{
F.P*=A.P; //числитель т знаменатель само на себя умножатся
F.Q*=A.Q;
}
}
void Drob::Print(void)
{
cout<<"\n"<<A.P<<"/"<<A.Q<<"\n";
}

void main(void)
{
Drob Y;
cout<<"vvedite drob'!"<<"\n";
Y.Vvod();
Y.Sokr();
cout<<"drob', posle sokrashenia:"<<"\n";
Y.Print(); //обращение к классу дробь
Y.Stepen(2);
cout<<"drob', vozvedennaia v kvadrat:"<<"\n";
cout<<F.P<<"/"<<F.Q<<"\n";


}
Uourin вне форума Ответить с цитированием
Старый 11.05.2016, 14:48   #2
zer0mail
 
Регистрация: 08.12.2014
Сообщений: 4
По умолчанию

Неужели трудно отформатировать код?
zer0mail вне форума Ответить с цитированием
Старый 11.05.2016, 14:56   #3
nworm
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 15
По умолчанию

функция, вычисляющая наибольший делитель в main не вызывается.
nworm вне форума Ответить с цитированием
Старый 19.05.2016, 08:20   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Я исправил ошибки.



Код:
#include <iostream>
#include <math.h>
using namespace std;


struct Frac{ int P; int Q; }; //числитель,знаменатель
Frac F; //обращение через переменную
class Drob
{
	Frac A;
public:
	void Vvod(void); // 5 функций (методов); имя ф
	int NOD(void);
	void Sokr(void);
	void Stepen(int N);
	void Print(void);
};

void Drob::Vvod(void)
{
	cout << "Числитель:";
	cin >> A.P;
	cout << "Знаменатель:";
	cin >> A.Q;
}

int Drob::NOD(void)
{ //нахождения наибольшего делителя
	int M, N;
	M = abs(A.P);
	N = A.Q;
	while (M != N)
	{
		if (M>N)
		if (M%N != 0) M = M%N; else M = N;
		else if (N%M != 0) N = N%M; else N = M;
	}
	return M;
}
void Drob::Sokr(void)
{
	int X;
	X = NOD(); //наибольший общий делитель
	if (A.P != 0) //не равно 0
	{
		A.P = A.P / X;
		A.Q = A.Q / X;
	}
	else A.Q = 1;
}
void Drob::Stepen(int N)
{
	int i;
	F.P = F.Q = 1; //глобальные переменные
	for (i = 1; i <= N; i++)
	{
		F.P *= A.P; //числитель т знаменатель само на себя умножатся
		F.Q *= A.Q;
	}
}
void Drob::Print(void)
{
	cout << "\n" << A.P << "/" << A.Q << "\n";
}

void main(void)
{
	Drob Y;

	setlocale(LC_ALL, "rus"); // корректное отображение Русских букв
	cout << "Введите дробь!" << "\n" << "\n";
	Y.Vvod();
	Y.Sokr();
	cout << "\n" << "Наибольший общий делитель:" << "\n";
	cout << Y.NOD() << "\n";

	cout << "\n" << "Дроби после сокращения:";
	Y.Print(); //обращение к классу дробь
	Y.Stepen(2);
	cout << "\n" << "Дроби, возведенные в квадрат:" << "\n";
	cout << F.P << "/" << F.Q << "\n" << "\n";

	system("pause");
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор





[IMG][/IMG]

Последний раз редактировалось Serge_Bliznykov; 19.05.2016 в 10:15.
ura_111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в задаче с графами Stasiksis Общие вопросы по Java, Java SE, Kotlin 0 15.12.2012 21:44
Ошибка в задаче mrX91 Паскаль, Turbo Pascal, PascalABC.NET 12 18.06.2012 02:57
где ошибка в простой задаче?) paxan86 Общие вопросы C/C++ 6 15.12.2011 19:06
Ошибка в задаче!!! Stiffler Помощь студентам 6 08.12.2009 19:49
ошибка в задаче с матрицей Валюшка Помощь студентам 2 08.02.2009 16:54