• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kaçıncı Esir

Katılım
15 Şubat 2005
Mesajlar
20
Excel Vers. ve Dili
(Excel 2003 - Türkçe)
" 1000 esir daire olusturacak şekilde diziliyorlar. Bu esirlerin 1.sine bir silah veriliyor ve yanındakini (2.yi) vurması söyleniyor. daha sonra yanindaki esir ölünce, silah sıradaki esire(3.ye) veriliyor ve o da yanindaki esiri öldürüyor. olay bu şekilde devam ediyor. En sonunda bir esir hayatta kaliyor. bu kaçıncı esirdir? "

Arkadaşlar bu soruyu nasıl bir makro (döngü) ile yada yerleşik fonksiyonla çözebiliriz ve cevap nedir..?

Şimdiden Teşekkür ederim.
 
Sayın karaelmas,

İlgili hesaplama kodları ekte.

Kod:
Sub Hesapla()
Dim n, x, y, j, sayaç, say As Integer
Dim Message, Title, Default

Message = "Kaç kişilik bir grup hesaplayacaksınız?"
Title = "Hesaplama"    ' Set title.
Default = "1000"    ' Set default.
' Display message, title, and default value.
n = InputBox(Message, Title, Default)  'Kaç kişilik hesap yapılması isteniyor
    
ReDim kamp(1 To n) As Integer   ' n kişilik bir dizi yaratılıyor

For x = 1 To n                  'Dizinin her elemanı numaralandırılıyor
    kamp(x) = x
Next x
    
    sayaç = 0                   'sayaç ve say değişkenleri sıfırlanıyor
    say = 0

Baş:                            ' Daire şeklinde durduklarından tekrar başa dönülüyor

 For j = 1 To n                 ' Dizi içinde teker teker elemanlar çağırılıyor
        
        sayaç = sayaç + 1       ' sayaç birer birer artıyor eğer 2 olursa eleman sıfırlanıyor yani kişi yok ediliyor
        
        If kamp(j) = 0 Then     'Döngü sırasında kişinin olmadığı bir alana gelindiğinde sayaç 1 eksiltiliyor
            sayaç = sayaç - 1
        End If
        
        If sayaç = 2 Then       'Eğer sayaç 2 ise dizi elemanı sıfırlanıyor
            kamp(j) = 0
            sayaç = 0
        End If
    
    For y = 1 To n              'Dizi tekrar taranıp 0 dan büyük olan elemanlar sayılıyor
        If kamp(y) > 0 Then
            say = say + 1
         End If
     Next y
    
        If say = 1 Then         'eğer tek bir eleman kalmışsa geriye kalan yani kazanan kişi o dur
            For x = 1 To n
                If kamp(x) > 0 Then 'Kalanın hangisi olduğunu bulmak için dizi taranıyor ve 0 dan büyük kalan eleman bulunuyor
                    MsgBox "Geriye kalan   " & x & ". kişi"
                End If
            Next x
            Exit Sub
        End If
        say = 0                 'Döngüde elemanları sayan sayı sıfırlanıyor
   Next j
        
        GoTo Baş
End Sub

Access de çözümünü de ekledim.

iyi çalışmalar :hey:
 
Sayın arkadaşlar,

Bu bir problem, alıştırma. Bir hesaplama şekli geliştirin diyor soruda.

1000 kişi için 977. kişi kalır.

Eklediğim hesaplama şeklinde istediğiniz adette gurup için hesaplama yapabilirsiniz.

İyi çalışmalar :D
 
Sayfa üzerinde makro ile uygulaması, en kötüsü de 465. kişinin durumu al beni vur diyor.
 
Geri
Üst