michal123 Temat założony przez niniejszego użytkownika |
Wyświetl wybrane liczby [C++] » 2013-11-17 17:52:26 Witam. Zakładałem już dziś podobny temat ale tamten został zamknięty, więc napiszę w nowym. Wspólnie z pomocą użytkowników napisałem program , który pobiera pary liczb z pliku tekstowego a następnie wyrzuca do innego pliku tekstowego NWD oraz NWW tych par liczb. Moje pytanie brzmi : jak przerobić ten program , by wyświetlał mi tylko te pary liczb których NWD=1 ? Czyli po prostu liczby względnie pierwsze. Wrzucam moje próby dokonania tego: #include <iostream> using namespace std; int main() { int a, b; int NWD, NWW; int azap = a, bzap = b; if( NWD = 1 ) std::cout << azap << bzap << endl; { while( std::cin >> a >> b ) { int azap = a, bzap = b; while( a != b ) { if( b > a ) b -= a; else a -= b; } std::cout << "a=" << azap << "|| b=" << bzap << "|| NWD = " << a << "|| NWW = " <<( azap * bzap ) / a << std::endl; } } return 0; }
oryginalna wersja programu: #include <iostream>
int main() { int a, b; while( std::cin >> a >> b ) { int azap = a, bzap = b; while( a != b ) { if( b > a ) b -= a; else a -= b; } std::cout << "a=" << azap << "||b=" << bzap << "||NWD = " << a << "||NWW = " <<( azap * bzap ) / a << std::endl; } return 0; } |
|
pekfos |
» 2013-11-17 18:09:21 Używasz niezainicjalizowanych zmiennych i użyłeś złego operatora w warunku, a warunek jest wstawiony w kompletnie złym miejscu. |
|
michal123 Temat założony przez niniejszego użytkownika |
» 2013-11-17 18:16:54 teraz wyświetla mi dla każdej pary NWD=1, więc wyświetla każdą #include <iostream>
int main() { int a, b; while( std::cin >> a >> b ) { int azap = a, bzap = b; while( a != b ) { if( b > a ) b -= a; else a -= b; } if( a = 1 ) std::cout << "a=" << azap << "||b=" << bzap << "||NWD = " << a << std::endl; else return 0; } return 0; }
|
|
pekfos |
» 2013-11-17 18:19:13 użyłeś złego operatora w warunku |
|
|
michal123 Temat założony przez niniejszego użytkownika |
» 2013-11-17 18:30:09 Poprawiłem na if( a == 1 ) i działa, ale nie do końca. NWD dwóch pierwszych par liczb wynosi 1 i je wyświetla aż dochodzi do 3 pary , której NWD wynosi 5 i na tym kończy program. Czy należy tu użyć pętli? @EDIT usunałem else oraz to co było po nim i działa, dzięki |
|
pekfos |
» 2013-11-17 18:36:23 Czy należy tu użyć pętli? |
Przecież masz już pętlę. Zastanów się raczej, co robi te else return 0; . |
|
michal123 Temat założony przez niniejszego użytkownika |
» 2013-11-17 18:37:31 Jak wyżej edytowałem, else było zbędne:) Dzięki, działa. Pozdrawiam. A mam jeszcze pytanie z czystej ciekawośći, jakbym chciał zliczyć ilość tych par, których NWD=1, to jak możnaby to zrobić? :) |
|
pekfos |
» 2013-11-17 18:47:27 Dodatkową zmienną? |
|
« 1 » 2 |