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

Jaki będzie wynik działania tego programu?

Object Storage Arubacloud
0 głosów
739 wizyt
pytanie zadane 22 października 2015 w C i C++ przez Kapi2222 Obywatel (1,220 p.)
edycja 22 października 2015 przez Eryk Andrzejewski

Witam!

Czy ktoś mógłby mi pomóc w rozwiązaniu tego zadania? Nie potrafie go logicznie zaanalizować. Dopiero zaczynam swoją przygodę z językiem C. Mimo tego nie potrafię rozwiązać tego zadania logicznego choć bardzo próbuje :( Pomoże mi ktoś?

int f(int a, int b)
{
    int a1=a, b1=b;
    while (a1!=b1)
        if(a1<b1) a1+=a;
       else b1+=b;return a;
}

int main()
{
    printf("%d\n", f(12, 18));
    return 0;
}


Wiem ,że powinno wyjść 12 ale mi wychodzi 24 i nie potrafię sobie wytłumaczyć czemu wynik powinien byc 12 a nie 24. Nie rozumiem też co oznacza return a w tym zapisie. Dziekuje za kazda odpowiedz i pozdrawiam :)

4 odpowiedzi

0 głosów
odpowiedź 22 października 2015 przez event15 Szeryf (93,790 p.)
http://ideone.com/Qrt2YW

Przecież wychodzi 12...

Bardzo brzydko sformatowany kod swoją drogą.
0 głosów
odpowiedź 22 października 2015 przez qwertz Użytkownik (850 p.)
Słowo return zwraca wartość "a" w miejsce gdzie została wywołana funkcja " f ".

W twoim przypadku w miejsce f(12, 18)  printf wypisze wartość "a".
0 głosów
odpowiedź 22 października 2015 przez Kapi2222 Obywatel (1,220 p.)
Dziękuję za wytłumaczenie tego przykładu ,już rozumiem na czym on polegał. Tylko wedlug tego w tym przykladzie:

int f(int a, int b)
{
    int a1=a, b1=b;
    while(a1!=b1)
        if (a1<b1)   a1+=a;
    else b1+=b;
    return a1;
}

int main(void)
{
    printf("%d\n", f(12, 18));

 

    return 0;
}

 

 

W tym przykladzie printf rowniez powinien napisac a1 czyli 12. A rozwiazaniem jest 36. Czy ktoś moglby mi w tym pomoc?
komentarz 22 października 2015 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Ten program wylicza NWW <- najmniejsza wspólna wielokrotność
0 głosów
odpowiedź 22 października 2015 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)

Zobacz wysyłasz do funkcji "f" dwa argumenty "a" oraz "b" gdzie "a"=12 a "b"=18 funkcja coś tam sobie robi ale ostatecznie zwraca tobie wartość która mieści się w zmiennej "a" czyli 12
Gdybyś zrobił  printf("%d\n", f(5, 18)); to w wyniku otrzymasz 5 printf("%d\n", f(8, 18)); to dostaniesz 8 itd....
w tym przypadku słówko return a oznacza że w miejsce f(12, 18) zostanie wstawiona zmienna "a" 
Poprostu twoja funkcja nie robi tego czego chciałeś :) 
a te 24 to nie wiem skąd Ci się wzieło 

Podobne pytania

0 głosów
0 odpowiedzi 123 wizyt
pytanie zadane 27 grudnia 2019 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
1 odpowiedź 111 wizyt
pytanie zadane 16 lutego 2019 w C i C++ przez no4tos Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 128 wizyt
pytanie zadane 10 stycznia 2016 w C i C++ przez notfreeman Nowicjusz (120 p.)

92,555 zapytań

141,402 odpowiedzi

319,553 komentarzy

61,939 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!

...