Program obliczający sumę NWD c++

Odpowiedz Nowy wątek
2011-10-22 14:58
0

Witam, mam do napisania program obliczający sumę wszystkich NWD.
Program ma pobierać liczby naturalne, jeżeli jest to 1 to liczy NWD 2 ostatnich wprowadzonych liczb różnych od 1, gdy wpiszemy 0
program wypisuje sumę wszystkich NWD i kończy działanie.

Np.

Wejście:
5 5 1 1 4 2 1 0
Wyjście:
12

Napisałem program ale niestety nie działa jak powinien proszę o pomoc w naprawieniu go

 #include <iostream>

using namespace std;

int main()
{
int number, n, a, b, s, suma = 0;

for(int i = 0; i < 1000000000; i++)
{
cin >> n;
if(n == 0)
{
     cout << suma;
     break;
}
cin >> s;
if(s == 0)
{
     cout << suma;
     break;
}

if(n != 1 && s != 1 && n != 0 && s != 0)
     {
      a = n;
      b = s;
     }
if(n == 1)
{
     while(a != b)
     {
          if(a < b)
          { 
           b -= a;
          } 
          else
          {
           a -= b;
          }
     }
suma = suma + a;
}
if(s == 1)
{
     while(a != b)
     {
          if(a < b)
          { 
           b -= a;
          } 
          else
          {
           a -= b;
          }
     }
suma = suma + a;
}

}

system("pause");
return 0;
}
edytowany 1x, ostatnio: Ridez, 2011-10-22 15:31

Pozostało 580 znaków

2011-10-23 15:53
0

Naprawiłem już ten program teraz działa prawidłowo, jednak chciałbym go trochę zmienić.
Chcę żeby liczby na wejściu były generowane losowo, gdzie dwie pierwsze muszą być większe od 1, proszę o pomoc.

 #include <iostream>

using namespace std;

int wczytaj()
{
unsigned int n, a, b, s, suma = 0;

for(int i = 0; i < 500000000; i++)
{
cin >> n;
if(n != 1)
{
     a = n;
}
if(n == 1)
{
     while(a != b)
     {
          if(a < b)
          { 
           b -= a;
          } 
          else
          {
           a -= b;
          }
     }
suma = suma + a;
}
if(n == 0)
{
     cout << suma;
     break;
}
cin >> s;
if(s != 1)
{
     b = s;
}
if(s == 1)
{
     while(a != b)
     {
          if(a < b)
          { 
           b -= a;
          } 
          else
          {
           a -= b;
          }
     }
suma = suma + a;
}
if(s == 0)
{
     cout << suma;
     break;
}
}
}

int main()
{
wczytaj();
return 0;
}
edytowany 2x, ostatnio: Ridez, 2011-10-23 15:55

Pozostało 580 znaków

2011-10-24 20:10
1

Najprymitywniej - w mainie na początku

 srand(time(NULL));

Potem zamiast

 cin >> n;

daj


if(i<2) n=rand()%x+2; //żeby losować liczby z przedziału od 2
else n=rand()%x;//żeby losowało od zera do x-1

I załatwione.

BTW - http://4programmers.net/Forum/C_i_C++/187346-nwd_z_ciagu_liczb

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0