Forum » Programiranje » problem s programiranjem ulomka
problem s programiranjem ulomka
Barbara6 ::
dobila sem nalogo da moram sprogramirat naslednje(z uporabo razredov, če znaš):
Računanje z ulomki in sicer mora naloga vsebovat:
->seštevanje dveh ulomkov,
->odštevanje dveh ulomkov,
->množenje dveh ulomkov,
->deljenje dveh ulomkov.
->krajsanje ulomka
->ter uporaba evklidovega algoritma
lepo prosim za pomoč, če bi kateri to sprogramiral
Računanje z ulomki in sicer mora naloga vsebovat:
->seštevanje dveh ulomkov,
->odštevanje dveh ulomkov,
->množenje dveh ulomkov,
->deljenje dveh ulomkov.
->krajsanje ulomka
->ter uporaba evklidovega algoritma
lepo prosim za pomoč, če bi kateri to sprogramiral
- premaknil iz Pomoč in nasveti: Gandalfar ()
Ciklamen ::
Nihče ti tega ne bo sprogramiral na lepe oči. Vsaj nekaj interesa boš morala sama pokazati.
Je pa na internetu najbrž malo morje rešitev za to, kaj imaš ti narediti, le potruditi se je treba malo in pobrskati :)
Je pa na internetu najbrž malo morje rešitev za to, kaj imaš ti narediti, le potruditi se je treba malo in pobrskati :)
- End of the Post ->
Barbara6 ::
ja Ciklamen sej maš prav, js bi sam prosla nekoga, da bi mi dal neko idejo, pol bom že sama naprej.
programirala bi pa v c++
programirala bi pa v c++
urosz ::
razred ulomek bi lahko zgledal približno tak:
lastnosti: števec, imenovalec
metode: seštej, odštej, zmnoži, ...
lastnosti: števec, imenovalec
metode: seštej, odštej, zmnoži, ...
Barbara6 ::
ja ja se strinjam :) sam sm misla, da bi dala v lastnosti:števec1, števec2,imenovalec1,imenovalec2... miliš da bi blo to prevč zakopliciran??
Vesoljc ::
http://www.dreamincode.net/forums/topic...
http://www.codeproject.com/Articles/410...
http://stackoverflow.com/questions/5690...
http://www.codeproject.com/Articles/410...
http://stackoverflow.com/questions/5690...
Abnormal behavior of abnormal brain makes me normal...
mallard ::
En imenovalec in števec na razred bo dovolj. Za krajšanje ulomka moraš poiskat največji skupni delitelj, za kar boš uporabila Evklidov algoritem. Ostane ti samo, da se spraviš na delo, tu pa dobiš pomoč, ko se kje zatakne :)
urosz ::
en imenovalec in en števec sta v razredu. če hočeš meti 2 (2 ulomka), narediš 2 instanci razreda. to je tudi glavni point objektnega programiranja
švrk ::
Malo za vajo sem se lotil te nalogice v javi. Napisal sem samo metodi seštej in množi ulomke. Zanima me če je moj pristop k nalogi pravi ali se morebiti z objekti dela kako drugače?
public class ulomek{ private double stevec; private double imenovalec; public ulomek(){ this.stevec=1.0; this.imenovalec=1.0; } public ulomek(double a, double b){ this.stevec=a; this.imenovalec=b; } public void mnozi(ulomek a, ulomek b){ this.stevec=a.getstevec()*b.getstevec(); this.imenovalec =a.getimenovalec()*b.getimenovalec(); } public void sestej(ulomek a, ulomek b){ this.stevec=a.getstevec()*b.getimenovalec()+b.getstevec()*a.getimenovalec(); this.imenovalec=a.getimenovalec()*b.getimenovalec(); } public double getstevec() { return this.stevec; } public double getimenovalec() { return this.imenovalec; } public void setimenovalec(double ime) { this.imenovalec=ime; } public void setistevec(double ime) { this.stevec=ime; } public String toString() { return this.stevec+"/"+this.imenovalec; } }
sherman ::
Ma nima smisla imeti kvocient dveh realnih stevil shranjen kot dve loceni realni stevili. To ti hocem povedat. Realna stevila so obseg. No, double niso realna stevila, lahko se na to obesis, a potem imas se vecje probleme.
Ko imas ulomke, jih je dobro imeti shranjene v okrajsani obliki, torej a/b kjer je gcd(|a|, |b|) = 1. Pa konstruktor je smiselno da preveri, ce ni kak saljivec podtaknil 0 za imenovalec.
Pa nekonsistenten si z oklepaji. Predvidevam da so bili eni generirani avtomatsko, druge si pa ti pisal.
Ko imas ulomke, jih je dobro imeti shranjene v okrajsani obliki, torej a/b kjer je gcd(|a|, |b|) = 1. Pa konstruktor je smiselno da preveri, ce ni kak saljivec podtaknil 0 za imenovalec.
Pa nekonsistenten si z oklepaji. Predvidevam da so bili eni generirani avtomatsko, druge si pa ti pisal.
švrk ::
No potem se pa naj najde junak in napiše kako se to pravilno naredi(vsaj metodi množi in seštej).
boogie_xlr ::
int main(int argc, char** argv) { ulomek a(2,4); ulomek b(1,3); ulomek c; c = a + b; ulomek d; d = a * c; std::cout << c << std::endl; return 0; }kako pa drugače...
Zgodovina sprememb…
- spremenil: boogie_xlr ()
ERGY ::
Mogoče za začetek...
class Fraction { public: //konstruktorji Fraction(): numerator(0), denominator(1) {} Fraction(int i): numerator(i), denominator(1) {} Fraction(int i, int j): numerator(i), denominator( j == 0 ? j = 1 : j) {} Fraction(const Fraction& fr): numerator(fr.numerator), denominator(fr.denominator) {} //metode Fraction show() const; const Fraction& simplify(); //preoblozeni operatorji bool operator==(const Fraction& fr) const; Fraction operator-() const; Fraction& operator=(const Fraction& fr); Fraction& operator+=(const Fraction& fr); Fraction& operator*(const Fraction& fr); const Fraction operator+(const Fraction& fr) const; private: int numerator; int denominator; };
KaRkY ::
Nekako tako se meni zdi najbolj prav.
import java.util.Objects; public class Ulomek { private final int stevec; private final int imenovalec; public Ulomek(final int stevec, final int imenovalec) { if (imenovalec == 0) throw new IllegalArgumentException("Imenovalec nesme biti null."); final int deljitelj = najvecjiSkupniDeljitelj(stevec, imenovalec); this.stevec = stevec / deljitelj; this.imenovalec = imenovalec / deljitelj; } public Ulomek deli(final Ulomek u) { return new Ulomek(getStevec() * u.getImenovalec(), getImenovalec() * u.getStevec()); } @Override public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (!getClass().equals(obj.getClass())) return false; final Ulomek other = (Ulomek) obj; return getStevec() == other.getStevec() && getImenovalec() == other.getImenovalec(); } @Override public int hashCode() { return Objects.hash(getStevec(), getImenovalec()); } public Ulomek mnozi(final Ulomek u) { return new Ulomek(getStevec() * u.getStevec(), getImenovalec() * u.getImenovalec()); } public Ulomek odstej(final Ulomek u) { return pristej(new Ulomek(-u.getStevec(), u.getImenovalec())); } public Ulomek pristej(final Ulomek u) { return new Ulomek(getStevec() * u.getImenovalec() + u.getStevec() * getImenovalec(), getImenovalec() * u.getImenovalec()); } @Override public String toString() { return String.format("%d/%d", getStevec(), getImenovalec()); } private int gcd(final int a, final int b) { if (b == 0) return a; return gcd(b, a % b); } private int najvecjiSkupniDeljitelj(final int a, final int b) { if (a < b) return gcd(b, a); else return gcd(a, b); } public int getStevec() { return stevec; } public int getImenovalec() { return imenovalec; } }
When you look long into an abyss, the abyss looks into you
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2211 (1547) | NejcSSD |
» | krajšanje ulomkovOddelek: Programiranje | 1422 (1354) | Karak |
» | Funkcije in prenos po referenciOddelek: Programiranje | 1850 (1556) | xordie |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2660 (2508) | SkIDiver |
» | [C++] Ulomek: +, -, *, /Oddelek: Programiranje | 2769 (2664) | Vesoljc |