Forum » Programiranje » krajšanje ulomkov
krajšanje ulomkov
Karak ::
pozdravljeni
ali mi lahko kdo pomaga pri krajšanju ulomkov.
Sem napisal program s katerim sešteješ ali zmnožiš dva ulomka. Rezultat pa bi moral okrajšati, vendar ne vem kako.
Prosim za pomoč. Pišem v jeziku c++.
ali mi lahko kdo pomaga pri krajšanju ulomkov.
Sem napisal program s katerim sešteješ ali zmnožiš dva ulomka. Rezultat pa bi moral okrajšati, vendar ne vem kako.
Prosim za pomoč. Pišem v jeziku c++.
WarpedGone ::
Števec in imenovalec razbiješ na praštevilske faktorje nato pa praštevila, ki so hkrati v števcu in imenovalcu mečeš stran.
Ko zgoraj in spodaj nimaš več nobenga istega si končal, preostala le še zmnožiš med sabo.
Ko zgoraj in spodaj nimaš več nobenga istega si končal, preostala le še zmnožiš med sabo.
Zbogom in hvala za vse ribe
Karak ::
Hvala, samo to vem vse že. Želel sem samo, da bi mi kdo povedal, kako okrajšati s pomočjo skupnega delitelja ali katere druge možnosti.
metalc ::
Z Evklidovim algoritmom poiščeš največji skupni delitelj števca in imenovalca (pri alg.pazi, da se ti v posebnih primerih ne zacikla) in z njim deliš števec in imenovalec.
Karak ::
Ja to sem že vse prebral vendar sem bolj nov v tem. Programiram ali bolje rečeno se učim programirat 3 tedne. Nekajkrat sem naletel na ukaz gcd. Vendar je zelo malo primerov v jeziku c++.
to je moja koda do sedaj. Ja saj vem da je na zelo dolgo napisana, vendar drugače ne znam še
to je moja koda do sedaj. Ja saj vem da je na zelo dolgo napisana, vendar drugače ne znam še
#include <cstdlib> #include <iostream> using namespace std; int main() { string operat_or; string sestevanje = "sestevanje"; float stevec1, stevec2, imenovalec1, imenovalec2; //vnosi float skupniImenovalec, sest_stevec1, sest_stevec2, konc_stevec, kraj_ulomek; //seštevanje cout << "Dobrodošli!" <<endl; cout << "Vnesite operacijo (sestevanje ali mnozenje): "; cin >> operat_or; if(operat_or == "sestevanje") //to se zgodi, ce uporabni vpise na zacetku sestevanje { float stevec1, stevec2, imenovalec1, imenovalec2; //vnosi float skupniImenovalec, sest_stevec1, sest_stevec2, konc_stevec, kraj_ulomek; //spremenljivke za sestevanje cout << "Vpisi stevec prvega ulomka: "; cin >> stevec1; //vpis prvega stevca cout << "Vpisi imenovalec istega ulomka: "; cin >> imenovalec1; //vpis prvega imenovalca cout << endl << endl; //gre dve vrstici dol cout << "Vpisi stevec drugega ulomka: "; cin >> stevec2; //vpis drugega stevca cout << "Vpisi imenovalec istega ulomka: "; cin >> imenovalec2; //vpis drugega imenovalca cout<<endl<<endl; if(imenovalec1!=imenovalec2) //preveri ce sta razlicna (!= ni enako) { cout << "Vsota je: "; skupniImenovalec=imenovalec1*imenovalec2; sest_stevec1=stevec1*imenovalec2; sest_stevec2=stevec2*imenovalec1; konc_stevec=sest_stevec1+sest_stevec2; cout<< konc_stevec << "/" << skupniImenovalec <<endl; } } else { float stevec1, stevec2, imenovalec3, imenovalec4; float zmnozen_imenovalec, zmnozen_stevec; cout << "Vpisi stevec prvega ulomka: "; cin >> stevec1; cout << "Vpisi imenovalec istega ulomka: "; cin >> imenovalec3; cout << endl << endl; cout << "Vpisi stevec drugega ulomka: "; cin >> stevec2; cout << "Vpisi imenovalec istega ulomka: "; cin >> imenovalec4; cout << endl << endl; if(imenovalec3!=imenovalec4) { cout << "Produkt je: "; zmnozen_imenovalec=imenovalec3*imenovalec4; zmnozen_stevec=stevec1*stevec2; cout << zmnozen_stevec << "/" << zmnozen_imenovalec << endl; } } system("PAUSE"); return EXIT_SUCCESS; // izhod iz funcije in vračanje razultata }
Zgodovina sprememb…
- spremenilo: Karak ()
metalc ::
V linkanem članku greš na "implementations", kjer je izvedbo zelo enostavno "prevesti" v skoraj katerikoli jezik. Če slučajno ne veš, mod pomeni ostanek po deljenju (% v C based jezikih vključno s C++).
V glavnem, vsega skupaj je nekaj vrstic.
V glavnem, vsega skupaj je nekaj vrstic.
metalc ::
Evo še C++ implementacija, ki jo lahko komot vstaviš v svoj razred ali kamorkoli že:
unsigned int greatestCommonDivisor(unsigned int first, unsigned int second) { // Najvecji skupni delitelj po Evklidovem algoritmu // Ce je katerikoli argument 0, bi se algoritem zaciklal v neskoncni // zanki. V tem primeru takoj vrni 0. Kasneje pazi, da ne bos // na vsak nacin delil z 0 !!!! if ( 0 == first || 0 == second ) { return 0; } // Sedaj je garantirano, da bo algoritem skonvergiral proti // najvecjemu sk. delitelju oz. 1 unsigned int a = first; unsigned int b = second; unsigned int t; while ( 0 != b ) { t = b; b = a % b; a = t; } return a; }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Naloga iz Putka - UPMOddelek: Programiranje | 2212 (1548) | NejcSSD |
» | problem s programiranjem ulomkaOddelek: Programiranje | 1665 (1105) | KaRkY |
» | Funkcije in prenos po referenciOddelek: Programiranje | 1850 (1556) | xordie |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2660 (2508) | SkIDiver |
» | [C++] Ulomek: +, -, *, /Oddelek: Programiranje | 2769 (2664) | Vesoljc |