[]
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

visual basic sorusu

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.
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
(13.06.17 07:35:30 ~ 07:49:56)

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ş.
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
(13.06.17 08:25:44 ~ 08:26:09)
1