Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wyświetl wybrane liczby [C++]

Ostatnio zmodyfikowano 2013-11-17 18:51
Autor Wiadomość
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:
C/C++
#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:

C/C++
#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;
}
 
P-96464
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.
P-96470
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ą

C/C++
#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;
}
P-96475
pekfos
» 2013-11-17 18:19:13
użyłeś złego operatora w warunku
P-96477
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
P-96484
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;
.
P-96487
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ć? :)
P-96488
pekfos
» 2013-11-17 18:47:27
Dodatkową zmienną?
P-96492
« 1 » 2
  Strona 1 z 2 Następna strona