odejmowanie i mnożenie ułamków

0

Dopiero zaczynam, czy ktoś mógłby mi pomóc

  1. Czy ten program do odejmowania ułamków jest dobrze napisany?
  2. Jak zmodyfikować ten program aby wyciągał całości z wyniku wtedy gdy jest to potrzebne?
  3. Jak zrobić program do mnożenia ułamków, w którym program wyciąga całości?
#include <iostream>
using namespace std;

 int nwd_odejmowanie(int a, int b)
{
	while (a!=b)
		if (a>b) a-=b;
		else b-=a;
	return a;
}

 int main()
{
	int l1, l2, m1, m2, nww;
	cout<<"Podaj licznik 1 ";
	cin>>l1;
	cout<<"Podaj mianownik 1 ";
	cin>>m1;
	cout<<"Podaj licznik 2 ";
	cin>>l2;
	cout<<"Podaj mianownik 2 ";
	cin>>m2;

	nww=m1*m2/nwd_odejmowanie(m1,m2);
	cout<<endl;
	
	cout<<l1<<"/"<<m1<<" - "<<l2<<"/"<<m2<<" = "<<(nww/m1*l1)-(nww/m2*l2)<<"/"<<nww;
	cout<<endl;
	
		
		return 0;
	
 }
4
kacper_00 napisał(a):
  1. Czy ten program do odejmowania ułamków jest dobrze napisany?

Absolutnie nie. Powinieneś napisać klasę Ulamek z odpowiednimi polami i przeciążonymi operatorami.

  1. Jak zmodyfikować ten program aby wyciągał całości z wyniku wtedy gdy jest to potrzebne?

calosci = licznik/mianownik;
if (calosci > 0), to całości są potrzebne.

  1. Jak zrobić program do mnożenia ułamków, w którym program wyciąga całości?

Tak samo jak do każdej innej operacji na ułamkach. Wyciąganie całości to powinna być metoda Twojej klasy, która działa na polach klasy, niezależnie od tego, czy dodajesz, odejmujesz, mnożysz, czy dzielisz. Jeśli boisz się przekroczenia zakresu zmiennej w liczniku, to Twoja klasa może mieć dodatkowe pole na całości.
A jeśli nie, to możesz zawsze przechowywać tylko licznik i mianownik, a przy wypisywaniu wartości się martwić o całości.

calosci = licznik/mianownik;
reszta = licznik % mianownik;

Jeśli reszta wynosi zero, to znaczy, że nie musimy wypisywać ułamka reszta/mianownik. W przeciwnym razie wypisujemy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1