Reklama
Pokazuje wyniki od 1 do 7 z 7

Temat: [c++] Algorytm Euklidesa -

  1. #1
    Avatar arturave
    Data rejestracji
    2007
    Położenie
    Prabuty
    Wiek
    29
    Posty
    527
    Siła reputacji
    17

    Domyślny [c++] Algorytm Euklidesa -

    Siema. Moja znajomość C++ jest marna ;C ale mógł by mi ktoś sprawdzić czy dobrze to zrobiłem? ewentualnie powiedzieć co jest źle .
    z góry dziękuje :)



    #include <iostream>
    using namespace std;

    main()
    {
    int a,b,liczba,liczbb;

    cout<<"Algorytm Euklidesa z uzyciem odejmowania" << endl;
    cout<<"============" << endl;
    cout<<"Podaj wartosci liczb naturalnych a i b" <<endl ;
    cout<<"liczba a : ";
    cin >> a;
    cout<<"liczba b : ";
    cin >> b;

    if (a>b)
    a=a-b;
    else if (a<b)
    a=b-a;
    else if (a=b)
    cout<<"Koniec."<< endl;


    cout<<"'Najwiekszy wspolny podzielnik liczb a i b wynosi : "<< a <<endl;

    cout<<"================================" << endl;
    cout<<"Koniec obliczeń." << endl;







    system("pause");
    getchar();
    return 0;

    }

  2. #2
    Avatar Pytoo
    Data rejestracji
    2006
    Położenie
    Olsztyn
    Wiek
    32
    Posty
    466
    Siła reputacji
    18

    Domyślny

    Przemyśl rozwiązanie brakuje chyba jakiejś pętli co? :) podajesz 10 i 2 i największy dzielnik wychodzi 8

    #include <iostream>

    using namespace std;

    int main()
    {
    int a,b,liczba,liczbb;

    cout<<"Algorytm Euklidesa z uzyciem odejmowania" << endl;
    cout<<"============" << endl;
    cout<<"Podaj wartosci liczb naturalnych a i b" <<endl ;
    cout<<"liczba a : ";
    cin >> a;
    cout<<"liczba b : ";
    cin >> b;

    a=150;
    b=15;
    while(true)
    {
    if (a>b)
    a=a-b;
    else if (a<b)
    b=b-a;
    else if (a=b)
    {
    cout<<"Koniec."<< endl;

    break;
    }

    }

    cout<<"'Najwiekszy wspolny podzielnik liczb a i b wynosi : "<< a <<endl;

    cout<<"================================" << endl;
    cout<<"Koniec obliczeń." << endl;








    return 0;
    }
    Ostatnio zmieniony przez Pytoo : 11-09-2013, 15:27

  3. Reklama
  4. #3
    Avatar arturave
    Data rejestracji
    2007
    Położenie
    Prabuty
    Wiek
    29
    Posty
    527
    Siła reputacji
    17

    Domyślny

    no też tak właśnie myślę. Ale nauczyciel podał program w turbo pascalu. i Wygląda on tak :

    a,b: integer;
    begin
    ClrScr;
    writeln;
    writeln('Algorytm Euklidesa z uzyciem odejmowania');
    writeln('=============================');
    writeln;
    writeln('Podaj wartosci liczb naturalnych a i b:');
    writeln;
    write(' a = ');readln(a);
    write(' b = ');readln(b);
    while a<>b do
    if a>b then
    a:= a-b
    else
    b:= b-a;
    writeln;
    writeln('Najwiekszy wspolny podzielnik liczb a i b wynosi ',a);
    writeln;
    writeln('Koniec obliczen')
    end.


    no jestem troszkę ciemny w tym :d bo za bardzo mnie to nie interere. W TB jest tam pentla while jest ale nie wiem kompletnie jak to przenieść na c++ xd.


    ###
    up

    o właśnie to już wiem jak się pętle while robi! :D dzięki :).
    tylko mam pytanie z tym:
    a=150;
    b=15;
    czemu akurat tak ?:D
    Ostatnio zmieniony przez arturave : 11-09-2013, 15:36

  5. #4
    Avatar bercik
    Data rejestracji
    2005
    Położenie
    Rojca
    Wiek
    35
    Posty
    406
    Siła reputacji
    20

    Domyślny

    while a<>b do <- pascal
    while(true) <- Twoja wersja
    Nie do końca przepisałeś to dokładnie

    @edit
    i jeszcze tu może być byczek: else if (a=b) - chyba chodziło o sprawdzenie if(a==b)

    @edit2
    a=150;
    b=15;
    napisanie wpisanych wartosci do a i b, nie powinno tam tego byc
    a co do petli while:
    pascal:while(a<>b) = c++:while(a!=b)
    Ostatnio zmieniony przez bercik : 11-09-2013, 16:30

  6. #5
    Avatar Pytoo
    Data rejestracji
    2006
    Położenie
    Olsztyn
    Wiek
    32
    Posty
    466
    Siła reputacji
    18

    Domyślny

    wpisałem sobie te dane z ręki, bo miałem dostęp tylko do słabego kompilatora online, który nie chciał czytać z cin więc mu pisałem na sztywno :) a tak to reszta kodu to jest Twój razem z elseifami. Błąd miałeś też tu:


    if (a>b)
    a=a-b;
    else if (a<b)
    a=b-a;
    powinno bz b=b-a;

  7. #6
    Avatar Ewande
    Data rejestracji
    2006
    Położenie
    Wrocław
    Posty
    367
    Siła reputacji
    18

    Domyślny

    Użycie breaka to nie jest najlepszy pomysł. Po coś jest w końcu miejsce na warunek w pętli i warto go użyć.
    Alternatywnie wersja rekurencyjna:



    @down
    Jest popularny w wielu językach: http://en.wikipedia.org/wiki/%3F:
    Ostatnio zmieniony przez Ewande : 12-09-2013, 21:58

  8. #7

    Data rejestracji
    2010
    Posty
    2,657
    Siła reputacji
    16

    Domyślny

    Cytuj pytoopol napisał Pokaż post
    Cytat został ukryty, ponieważ ignorujesz tego użytkownika. Pokaż cytat.
    Przemyśl rozwiązanie brakuje chyba jakiejś pętli co? :) podajesz 10 i 2 i największy dzielnik wychodzi 8
    jest to zle, operator porównania to == a nie =.

    @up
    Od kiedy syntax Wyrażenie ? True : False; jest poprawne w C++? Myślałem że to tylko w php o_O

Reklama

Informacje o temacie

Użytkownicy przeglądający temat

Aktualnie 1 użytkowników przegląda ten temat. (0 użytkowników i 1 gości)

Podobne tematy

  1. Algorytm dostępu do pliku (Do studentów informatyki)
    Przez Hardware w dziale Programowanie
    Odpowiedzi: 1
    Ostatni post: 06-09-2015, 11:37
  2. Algorytm skryptu WT// PHP
    Przez Rollercoster w dziale Programowanie
    Odpowiedzi: 4
    Ostatni post: 26-01-2014, 13:11
  3. [algorytm] koło liczb
    Przez Kusterek w dziale Programowanie
    Odpowiedzi: 5
    Ostatni post: 10-01-2014, 12:15
  4. Algorytm.
    Przez Dzzej w dziale Szkoła i nauka
    Odpowiedzi: 2
    Ostatni post: 05-11-2013, 13:03
  5. zamiana systemów decymalny na dowolny szybszy algorytm
    Przez Cheaster w dziale Szkoła i nauka
    Odpowiedzi: 1
    Ostatni post: 05-01-2013, 08:04

Zakładki

Zakładki

Zasady postowania

  • Nie możesz pisać nowych tematów
  • Nie możesz pisać postów
  • Nie możesz używać załączników
  • Nie możesz edytować swoich postów
  •