abc = a³ + b³ + c³

olan sayıları bulan bi program yazmaya çalışıyorum. aşağıda biyerde çok pis saçmalıyorum ama nerde? yeniyim, yeni bile sayılmam sınav var ona çalışıyorum, umarım birileri vardır bilen. tşk.

-----------------------

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim abc As Integer


Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

For abc = 100 To 999
If abc = (a * a * a) + (b * b * b) + (c * c * c) Then
Msgbox
Else
End If
Next
End Sub

 

bilgisayar abc sayısını bizim gördüğümüz gibi görmüyor. yani 101 sayısının yanyana gelmiş 1, 0 ve 1 rakamlarından oluştuğunu anlayamaz. Ona bunu anlatman lazım. Dolayısıyla kavramsal olarak şöyle yazman lazım;

int a=1
int b=0
int c=0
int abc = 100*a + 10*b + c

Daha sonra iç içe üç tane for yazman gerek. En dıştakinde a'yı 0'dan 9'a bir artıracaksın, onun içindekinde b'yi ve onun da içindekinde c'yi bir artıracaksın. c'nin for döngüsüne de if şartını yazacaksın. hepsinin sonuna da tek tek a=a+1 b=b+1 c=c+1 yazacaksın.

ek: ha, bir de her if'in sonunda ilgili değişkeni sıfırlamayı unutma. sadece a'yı sıfırlamayacaksın. o 9'a ulaştığında döngün bitmeli.

alperz

biraz daha verimli yazmak istersek iç içe for kullanmak yerine senin yöntemle gidip bir for ile bitirebiliriz. fakat abc'yi basamaklarına ayırmak gerekiyor. bunun için de normal bölme (/) yerine integer bölme (\) kullanmak gerekiyor.

Sub abc()
Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim abc As Integer

For abc = 100 To 999
a = abc \ 100
b = (abc - a * 100) \ 10
c = abc - a * 100 - b * 10
If abc = (a * a * a) + (b * b * b) + (c * c * c) Then

Debug.Print (abc)

End If
Next
End Sub

bu özelliği sağlayan sayılar: 153 370 371 407

ek bilgi: bu özelliği sağlayan sayılara narcissistic number deniyormuş.

bellbane
1

mobil görünümden çık