[]

visual basic sorusu

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  (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ş.
  • bellbane  (13.06.17 08:25:44 ~ 08:26:09) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.