Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

C++ programozási törtes feladat

282
Előre is köszönöm a segítséget!

Tehát van egy C++ feladat, ami alapján két tört bevitelével (négy int egész szám) négy alapművelet (+,-,*,:) után a négy végeredményt kellene kiadnia újabb egész számok alakjában.

Tehát mint a példában is állt:
Bevitel:
1 2
1 6

Kivitel:
2 3
1 3
1 12
3 1

Tizedestörtként sikerült már kiíratnom (ami evidens), de nem tudom, pontosan hogyan tovább. Osztásokra (%) gondolok, de előtte azt fel kellene szorozni, hogy a maradékos osztót lehessen használni, de ez nem lenne univerzális.

Jelenlegi helyzet a képen mellékelve:
Jelenleg 1 felhasználó nézi ezt a kérdést.
informatika, c++, codeblocks, sos, programozás, program, parancssor, code, blocks, c
0
Középiskola / Informatika

Válaszok

1
Nem programozok C++-ban, viszont annyi biztos, abban is vannak úgynevezett "rounding error"-ok. Ezek abból adódnak, hogy a gép egyszerűen nem bírja akkora pontossággal eltárolni a lebegőpontos számokat, így amikor műveleteket végzel velük, érdekes anomáliák keletkezhetnek, mint pl. ez Python 3.8-ban:
>>> 1-0.9
0.09999999999999998

Lényeg ami lényeg, ha pontos egész számokat keresel, akkor jobban jársz, ha egész számokkal dolgozol. Ezt úgy tudod elérni, hogy a műveleteket matematikai definícióuk szerint végzed el, azaz
`a/b+-c/d=(ad+-cb)/(bd)`

`a/b*c/d=(ac)/(bd)`

`a/b:c/d=(ad)/(bc)`
Ezek után egyszerűsítesz valami legnagyobb közös osztó algoritmus segítségével, és megvan a pontos megoldásod.
0