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
Wolfi
kérdése
331
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
zsombi0806{ Matematikus }
megoldása
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.