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.
 

Metin Karaağaç

Uzman
Altın Üye
Katılım
25 Aralık 2004
Mesajlar
1,793
Excel Vers. ve Dili
Office 2016 Pro Plus-Türkçe
Altın Üyelik Bitiş Tarihi
10-12-2025
içinde ölüm olmasaydı çok güzel bir soruymuş aslında.
 
Katılım
15 Şubat 2005
Mesajlar
20
Excel Vers. ve Dili
(Excel 2003 - Türkçe)
Keşke ama siz öldürmeden de çözebilirsiniz..:)
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
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:
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
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
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,614
Excel Vers. ve Dili
Pro Plus 2021
Sayfa üzerinde makro ile uygulaması, en kötüsü de 465. kişinin durumu al beni vur diyor.
 
Üst