Najwiekszy wspolny dzielnik - algorytm

Awatar użytkownika
pOwer
Użytkownik
Użytkownik
Posty: 47
Rejestracja: 9 kwie 2006, o 18:56
Płeć: Mężczyzna
Lokalizacja: Bochnia
Podziękował: 2 razy

Najwiekszy wspolny dzielnik - algorytm

Post autor: pOwer »

Adams pisze:(btw zaznaczenie z ilu liczb ma liczyć NWD u mnie w ogóle nie jest brane pod uwagę)
bo gdy jest zaznaczone zero, to je pomija
Awatar użytkownika
Lorek
Użytkownik
Użytkownik
Posty: 7150
Rejestracja: 2 sty 2006, o 22:17
Płeć: Mężczyzna
Lokalizacja: Ruda Śląska
Podziękował: 1 raz
Pomógł: 1322 razy

Najwiekszy wspolny dzielnik - algorytm

Post autor: Lorek »

No z tym to jeszcze się zgodzę, ale jak dam np. 5 liczb różnych od 0, to liczy niezależnie czy zaznaczę 2 czy 4 czy 8.
Awatar użytkownika
pOwer
Użytkownik
Użytkownik
Posty: 47
Rejestracja: 9 kwie 2006, o 18:56
Płeć: Mężczyzna
Lokalizacja: Bochnia
Podziękował: 2 razy

Najwiekszy wspolny dzielnik - algorytm

Post autor: pOwer »

Faktycznie. Wystarczy 1 literkę w kodzie zmienić i wszystko działa ok

link zaaktualizowany - - :

teraz jeśli chodzi o kod,

funkcja nwd:

Kod: Zaznacz cały

int nwd(int a,int b)
{
int c,d,e,x;
x=0;
		while(x<=0){
			if(b==0) break;
			c=a/b;d = c * b;e=x;e = a - d;a=b;b=e;
		}
return a;
}
i jeszcze podam kod pod przyciskiem "oblicz nwd"

Kod: Zaznacz cały

int z,q,w,r,t,y,u,i,o,p,s;
z=2;
if (C3->State==cbChecked) z = 3;
if (C4->State==cbChecked) z = 4;
if (C5->State==cbChecked) z = 5;
if (C6->State==cbChecked) z = 6;
if (C7->State==cbChecked) z = 7;
if (C8->State==cbChecked) z = 8;
if (C9->State==cbChecked) z = 9;
if (C10->State==cbChecked) z = 10;

q=StrToInt(l1->Text);
w=StrToInt(l2->Text);
r=StrToInt(l3->Text);
t=StrToInt(l4->Text);
y=StrToInt(l5->Text);
u=StrToInt(l6->Text);
i=StrToInt(l7->Text);
o=StrToInt(l8->Text);
p=StrToInt(l9->Text);
s=StrToInt(l10->Text);

Nwd->Text=nwd(q,w);
if(z==2)Nwd->Text=nwd(q,w);
if(z==3)Nwd->Text=nwd(nwd(q,w),r);
if(z==4)Nwd->Text=nwd(nwd(nwd(q,w),r),t);
if(z==5)Nwd->Text=nwd(nwd(nwd(nwd(q,w),r),t),y);
if(z==6)Nwd->Text=nwd(nwd(nwd(nwd(nwd(q,w),r),t),y),u);
if(z==7)Nwd->Text=nwd(nwd(nwd(nwd(nwd(nwd(q,w),r),t),y),u),i);
if(z==8)Nwd->Text=nwd(nwd(nwd(nwd(nwd(nwd(nwd(q,w),r),t),y),u),i),o);
if(z==9)Nwd->Text=nwd(nwd(nwd(nwd(nwd(nwd(nwd(nwd(q,w),r),t),y),u),i),o),p);
if(z==10)Nwd->Text=nwd(nwd(nwd(nwd(nwd(nwd(nwd(nwd(nwd(q,w),r),t),y),u),i),o),p),s);
}
objaśnienie: "Nwd" - pole, ktore wyświetla NWD,
C1 do C10 - pola CheckBox
l1 do l10 - pola, w ktore wpisujemy liczby
ODPOWIEDZ