Program skracajacy ulamek w c++ - konsola

czacha

Program skracajacy ulamek w c++ - konsola

Post autor: czacha »

Witam bardzo serdecznie.
Mam problem z napisaniem programu pod konsole w jezyku c++ ktory skracal by ulamek zwykly zapisany np w takiej postaci:.

cout
jasny
Użytkownik
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

Post autor: jasny »

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;
}
Xfly
Użytkownik
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

Post autor: Xfly »

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
Awatar użytkownika
Undre
Użytkownik
Użytkownik
Posty: 1430
Rejestracja: 15 lis 2004, o 02:05
Płeć: Mężczyzna
Lokalizacja:
Podziękował: 3 razy
Pomógł: 92 razy

Program skracajacy ulamek w c++ - konsola

Post autor: Undre »

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 ?
Awatar użytkownika
Sokół
Użytkownik
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

Post autor: Sokół »

Kod: Zaznacz cały

http://www.open-std.org/jtc1/sc22/wg21/

standaryzuja c++, jak gdzies jest, to pewnie tam.
Awatar użytkownika
amdfanatyk
Użytkownik
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

Post autor: amdfanatyk »

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.
czacha

Program skracajacy ulamek w c++ - konsola

Post autor: czacha »

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
Użytkownik
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

Post autor: jasny »

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.
czacha

Program skracajacy ulamek w c++ - konsola

Post autor: czacha »

Ok juz mniej wiecej rozumiem. Dzieki pozdrawiam
ODPOWIEDZ