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 | 2310 (1646) | NejcSSD |
» | problem s programiranjem ulomkaOddelek: Programiranje | 1711 (1151) | KaRkY |
» | Funkcije in prenos po referenciOddelek: Programiranje | 1931 (1637) | xordie |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2768 (2616) | SkIDiver |
» | [C++] Ulomek: +, -, *, /Oddelek: Programiranje | 2813 (2708) | Vesoljc |