• 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,437 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 835 wizyt
0 głosów
1 odpowiedź 527 wizyt
pytanie zadane 20 lipca 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)
0 głosów
0 odpowiedzi 476 wizyt
pytanie zadane 10 września 2017 w SPOJ przez Józef Niecierski Początkujący (440 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...