• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

dodawanie ulamkow cpp

Object Storage Arubacloud
0 głosów
4,501 wizyt
pytanie zadane 18 listopada 2015 w C i C++ przez Memories Obywatel (1,410 p.)

Witam.

#include <iostream>
#include <math.h>
using namespace std;

int main()
{

unsigned long long a,b,c,d,cos,cos2,pomo,nww,nwd;
char znak;


cin>>a>>znak>>b;
cin>>c>>znak>>d;
cos=b;
cos2=d;

	while(d!=0)
    {
    pomo = d;
    d = b%d;
    b = pomo;
    }
    nww=(cos/b)*cos2;
    nwd=b;

while (cos!=nww)
{
    a+=a;
    cos+=nwd;


}

while (cos2!=nww)
{
    c+=c;
    cos2+=nwd;


}
cout<<a+c<<"/"<<nww;
    return 0;

}

 

 

Mam taki kodzik. Dziala ogolnie dobrze, liczy mi ulamki, sprawdzalem na przykladach, aleee

 

wejście:
3456/4000000000 1/4000000001
Wyjście:
3456/4000000000 + 1/4000000001 = 108031250027/125000000031250000

 

Taki przyklad podal mi nauczyciel. Czemu mi wywala program jak taki wpisze ? Typ danych mam unsigned long long... Ma ktos jakis pomysl ? co zle, jaki blad i gdzie, troszke wyjasnien. 

Z gory bardzo dziekuje za okazany mi czas!

4 odpowiedzi

+1 głos
odpowiedź 18 listopada 2015 przez furas Maniak (53,800 p.)
Co znaczy "wywala" ? Dostajesz jakiś komunikat o błędzie czy całkiem się program zawiesza lub okno zamyka ?
komentarz 18 listopada 2015 przez Memories Obywatel (1,410 p.)
Program sie zawiesza, mam migajacy znaczek "podlogi" (ten co w cmd mryga zeby cos wprowadzic), ale nie moge zadnego znaku tam wstawic, niczego.
+1 głos
odpowiedź 18 listopada 2015 przez Porcupine Nałogowiec (31,560 p.)

Nikt Ci nie odpisuje bo dałeś furasowi najlepszą odpowiedź czyli tak jakbyś oznaczył wątek za zakończony. Wiem, że to mało rozwijające ale napisałem dla Ciebie gotowe rozwiązanie, głównie po to żeby zaznaczyć kilka istotnych faktów:

 

#include <iostream>
#define ull unsigned long long
using namespace std;

ull NWD (ull a, ull b) {

    ull tmp;

    while (b != 0) {

        tmp = b; 
        b = a % b;
        a = tmp;
    }

    return a;
}
 
int main() {

    ull a, b, c, d, nww, nwd, nwd2;
    char znak;

    cin >> a >> znak >> b;
    cin >> c >> znak >> d;

    nwd = NWD(b, d);
    nww = (b / nwd) * d;

    a = (d / nwd) * a; 
    c = (b / nwd) * c;

    nwd2 = NWD(a + c, nww);

    cout << (a + c) / nwd2 << '/' << nww / nwd2 << endl;

    return 0;
}

Nie jest to jakoś super zoptymalizowany program ale działa... 
Kilka uwag: 

1) Twoja metoda ogólnie nie zawsze działa, a te pętle while to na prawdę był zły pomysł
2) Koniecznie używaj funkcji, piszesz dla siebie, a nie po to żeby Twój nauczyciel nie pomyślał, że zgapiasz
3) Stosuj wcięcia i spacje, bo Twój kod na prawdę jest baaaaarrrdzzzoooo nie czytelny

4) Błagam Cię nie nazywaj zmiennych jako "coś"

Pozdrawiam,

komentarz 18 listopada 2015 przez Memories Obywatel (1,410 p.)
wiesz, pisze pierwsze lepsze, nie zwracalem na to jakiejs szczegolnej uwagi ;p

Dzieki za rady, przystosuje sie do tego. Dzieki wielkie!
0 głosów
odpowiedź 18 listopada 2015 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Nie lepiej Ci było napisać prostą funkcję  NWD, następnie zrobić nww  mianowników i sumę liczników w funkcji, a na końcu wypisać ? Jak byś zrobił to na 2 funkcje to łatwiej by ci było błędy wychwycać
komentarz 18 listopada 2015 przez Memories Obywatel (1,410 p.)
Wiem, ale zdecydowalem sie zrobic tak (ta opcja o ktorej mowisz jest na stronie u mojego nauczyciela, nie chce zeby myslal, ze sciagam). :)
komentarz 18 listopada 2015 przez Memories Obywatel (1,410 p.)
WIem, ze to seksowniej wyglada, ale wiesz ;p
komentarz 18 listopada 2015 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
To mu powiec, że jesteś w stanie napisać to na lekcji i wyjaśniac linijkę po linijce, bo taki styl pisania moim to gwarantowany błąd
0 głosów
odpowiedź 18 listopada 2015 przez Memories Obywatel (1,410 p.)
Jakies pomysly?

Podobne pytania

0 głosów
2 odpowiedzi 877 wizyt
0 głosów
1 odpowiedź 541 wizyt
pytanie zadane 20 lipca 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)
0 głosów
0 odpowiedzi 487 wizyt
pytanie zadane 10 września 2017 w SPOJ przez Józef Niecierski Początkujący (440 p.)

92,679 zapytań

141,582 odpowiedzi

320,065 komentarzy

62,041 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...