Program skracajacy ulamek w c++ - konsola
Program skracajacy ulamek w c++ - konsola
Witam bardzo serdecznie.
Mam problem z napisaniem programu pod konsole w jezyku c++ ktory skracal by ulamek zwykly zapisany np w takiej postaci:.
cout
Mam problem z napisaniem programu pod konsole w jezyku c++ ktory skracal by ulamek zwykly zapisany np w takiej postaci:.
cout
-
- Użytkownik
- Posty: 845
- Rejestracja: 2 kwie 2006, o 23:32
- Płeć: Mężczyzna
- Lokalizacja: Limanowa
- Pomógł: 191 razy
Program skracajacy ulamek w c++ - konsola
Można obliczyć NWD licznika i mianownika (np schematem Hornera), a potem podzielić licznik i mianownik przez to NWD.
Kod: Zaznacz cały
#include <iostream.h>
#include <stdlib.h>
int main()
{ int l,m; //wprowadzenie danych
cout<<"Licznik: ";
cin>>l;
cout<<"Mianownik: ";
cin>>m;
int a,b,c; //nwd schematem Hornera
if (m<l){a=l;b=m;}
else {a=m;b=l;}
do {c=a%b;a=b;b=c;}
while (c!=0);
cout<<l<<"/"<<m<<" = "<<l/a<<"/"<<m/a<<endl;
system("PAUSE");
return 0;
}
-
- Użytkownik
- Posty: 174
- Rejestracja: 13 mar 2006, o 20:44
- Płeć: Mężczyzna
- Lokalizacja: Nowogard
- Podziękował: 33 razy
- Pomógł: 10 razy
Program skracajacy ulamek w c++ - konsola
taka mala uwaga - w standardzie c++ nie istnieje cos takiego jak i
powinnismy uzywac i - wiem ze przy wczesniejszym zapisie wszystko dziala, ale trzymajmy sie czystosci skladni - sorry ze sie czepiam
powinnismy uzywac i - wiem ze przy wczesniejszym zapisie wszystko dziala, ale trzymajmy sie czystosci skladni - sorry ze sie czepiam
- Undre
- Użytkownik
- Posty: 1430
- Rejestracja: 15 lis 2004, o 02:05
- Płeć: Mężczyzna
- Lokalizacja: UĆ
- Podziękował: 3 razy
- Pomógł: 92 razy
Program skracajacy ulamek w c++ - konsola
Uwaga w sumie słuszna, bodajże w Devie 4.9.9.2 ( najnowszym ) stary zapis się nie kompiluje. btw orientujesz sie od kiedy jest to w standardzie ?
- Sokół
- Użytkownik
- Posty: 451
- Rejestracja: 17 wrz 2006, o 19:22
- Płeć: Mężczyzna
- Lokalizacja: Zielona Góra
- Podziękował: 15 razy
- Pomógł: 55 razy
Program skracajacy ulamek w c++ - konsola
Kod: Zaznacz cały
http://www.open-std.org/jtc1/sc22/wg21/
standaryzuja c++, jak gdzies jest, to pewnie tam.
- amdfanatyk
- Użytkownik
- Posty: 98
- Rejestracja: 27 mar 2005, o 14:59
- Płeć: Mężczyzna
- Lokalizacja: /dev/zero
- Podziękował: 9 razy
- Pomógł: 7 razy
Program skracajacy ulamek w c++ - konsola
dzielic licznik przez wielokrotnosci mianownika do momentu gdy reszta z tego dzielenia jest == 0; potem pomnozyc mianownik przez znaleziony maksymalny dzielnik calkowity i odjac od licznika i zapisac to jako dzielone przez mianownik.
Program skracajacy ulamek w c++ - konsola
Undre ja mam dev-cpp 4.9.9.2 i jest z tym ok.
jasny kod dziala poprawnie, aczkolwiek bede musial go przeanalizowac, bo jest troszeczke trudny. Dzieki serdeczne. Pozdrawiam
[ Dodano: 16 Listopad 2006, 19:08 ]
jasny bylbym jednak zadowolony gdybys mogl mi jako tako wyjasnic ten schemat Hornera, o co w tym chodzi co to sa te zmienne a,b,c. co do czego sluzy i jak poszczegolne linijki wplywaja na program bo ja nie za bardzo moge to zrozumiec.
jasny kod dziala poprawnie, aczkolwiek bede musial go przeanalizowac, bo jest troszeczke trudny. Dzieki serdeczne. Pozdrawiam
[ Dodano: 16 Listopad 2006, 19:08 ]
jasny bylbym jednak zadowolony gdybys mogl mi jako tako wyjasnic ten schemat Hornera, o co w tym chodzi co to sa te zmienne a,b,c. co do czego sluzy i jak poszczegolne linijki wplywaja na program bo ja nie za bardzo moge to zrozumiec.
-
- Użytkownik
- Posty: 845
- Rejestracja: 2 kwie 2006, o 23:32
- Płeć: Mężczyzna
- Lokalizacja: Limanowa
- Pomógł: 191 razy
Program skracajacy ulamek w c++ - konsola
NWD można obliczyć używając schematu Hornera. Ma to się mniej więcej tak: mamy dwie liczby a i b, a>b (w programie powyżej a to licznik lub mianownik (to większe), a b to mniejsza z tych liczb). Więc chcemy obliczyć NWD(a,b). Wprowadzamy zmienną c, przypisujemy jej resztę z dzielenia a przez b. a zamieniamy na b, b zamieniamy na c, a c przypisujemy resztę z dzielenia nowego a przez nowe b. I tak dalej, powtarzamy te czynności dopóki c jest różne od zera. Kiedy c osiągnie zero, otrzymamy NWD tych liczb, będzie to obecna wartość a. Dlatego przy wypisaniu wyników dzielimy licznik i mianownik przez a.