C++/Oyun Programlama


C ve C++ Programlama    C ve C++ Programlama İle İlgili Paylaşım Kategorisi

Yazar: TRUlkucuBey    65 Yorum    1832 Görüntüleme
  • 0 Oy - 0 Yüzde

Paylaşım Tarihi: 31.01.2016, 22:54:14 #1
TRUlkucuBey Dedeye Sahip Çıkalım
Onaylı Uye
Status: Çevrimdışı Yorum Sayısı:190 Konu Sayısı:51 Üyelik Tarihi:25.01.2016 Rep Puanı: 13

 ===Mahkum Problemi===
[Hide]


Problem şu ;
bir masanın etrafında 21 tane mahkum vardır..
1. mahkumdan başlamak üzere 1. mahkumdan sonra gelen hayatta olan ilk 2 mahkumdan 2.si ölecek daha sonra o ölen mahkumdan sonra gelen ilk hayatta olan mahkumdan sonraki ilk 2 mahkumdan 2. ölecek ve bu böyle devam edecek ta ki hayatta 1 kişi kalana kadar,hayatta kalan mahkum hangisidir?
Bu arada kodlara bakmadan algoritmayı oluşturmaya çalışın , zihin açıcı bir soru bence...

Benim geliştirdiğim kodlar;

Kod:
#include<stdio.h> #include<conio.h> main() { int A[21]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; //Mahkumların hepsine 1 degeri verdim,yaşadıklarını belirtmek için. int i,j,n,sayac,x; i=0; // 1. mahkumdan başlandığı için i=0 başlangıç değeri verdim. while(1) { sayac=0;x=0;n=i+1; while(1){ if(n>20) n=0; if(A[n]==1) sayac++; //Hayatta olan mahkumdan sonraki hayatta olan ilk iki mahkumu bulmak icin, if(sayac==2) break; //sonsuz döngü açtım,bu ilk iki mahkumdan ikincisine ulaştığımda döngüyü kırdım, n++; //çünkü ölücek olan ikinci mahkum olacak, } A[n]=0;//döngüyü kırdıktan sonra o makuma 0 değeri vererek öldürdüm. while(1) { n++; //öldürdüğüm mahkumdan sonra gelen ilk hayattaki mahkumu bulmak için, if(n>20) n=0; //yine sonsuz bir döngü açtım,çünkü bi yerden sonra ölü mahkumdan sonra gelen, if(A[n]==1) {i=n;break;} // mahkumda ölü olabilir,yani 18.=0,19.=0 olabilirdi. } for(j=0;j<21;j++) { if(A[j]==1) x++;} // for döngüsüyle hayatta kalan tek 1 kişi olup olmadığını kontrol ettim, if(x==1) break; //eğer 1 kişi kalmışsa en baştaki sonsuz döngüyü kırıp çıktım.. } for(j=0;j<21;j++) {if(A[j]==1) { printf("%d",j+1);break;} // son olarak hayatta olan kişiyi indis numarısıyla buldum.. //indis numarasını 1 arttırım çünkü A[0] 1. kişiyi temsil ediyo aslında. } getch();return 0; } [/Hide]
Son Düzenleme: 31.01.2016, 22:55:45, Düzenleyen: TRUlkucuBey.

Kullanıcı İmzası
[img=0x147]http://i.hizliresim.com/rZGljz.png[/img]
Paylaşım Tarihi: 02.02.2016, 00:15:53 #2
wiey Çömez
Kayıtlı Üye
Status: Çevrimdışı Yorum Sayısı:2 Konu Sayısı:0 Üyelik Tarihi:02.02.2016 Rep Puanı: 0

Yorum YaZDIM Big Grin
Paylaşım Tarihi: 02.02.2016, 16:28:00 #3
harun593 Delikanlı
Onaylı Uye
Status: Çevrimdışı Yorum Sayısı:135 Konu Sayısı:21 Üyelik Tarihi:02.01.2016 Rep Puanı: 19

deneyecem

Kullanıcı İmzası
linkleri görmek için giriş yapmanız. Yada üye olmanız gerekir.
Paylaşım Tarihi: 03.02.2016, 16:43:12 #4
TRUlkucuBey Dedeye Sahip Çıkalım
Onaylı Uye
Status: Çevrimdışı Yorum Sayısı:190 Konu Sayısı:51 Üyelik Tarihi:25.01.2016 Rep Puanı: 13

Deneyebilirsiniz Çalısıyor.

Kullanıcı İmzası
[img=0x147]http://i.hizliresim.com/rZGljz.png[/img]
Paylaşım Tarihi: 03.02.2016, 16:44:03 #5
TRUlkucuBey Dedeye Sahip Çıkalım
Onaylı Uye
Status: Çevrimdışı Yorum Sayısı:190 Konu Sayısı:51 Üyelik Tarihi:25.01.2016 Rep Puanı: 13

Deneyebilirsiniz Çalısıyor.

İYİ FORUMLAR

Kullanıcı İmzası
[img=0x147]http://i.hizliresim.com/rZGljz.png[/img]
Paylaşım Tarihi: 08.02.2016, 21:06:42 #6
Ghostman Yeğen
Kayıtlı Üye
Status: Çevrimdışı Yorum Sayısı:17 Konu Sayısı:3 Üyelik Tarihi:16.01.2016 Rep Puanı: 0

bakıorm hemen
Paylaşım Tarihi: 08.02.2016, 21:19:59 #7
ALBAYRAK Delikanlı
Onaylı Uye
Status: Çevrimdışı Yorum Sayısı:64 Konu Sayısı:5 Üyelik Tarihi:28.01.2016 Rep Puanı: 4

Bakalim

Kullanıcı İmzası
linkleri görmek için giriş yapmanız. Yada üye olmanız gerekir.

Paylaşım Tarihi: 09.02.2016, 03:44:26 #8
selman9924 Yeğen
Kayıtlı Üye
Status: Çevrimdışı Yorum Sayısı:19 Konu Sayısı:2 Üyelik Tarihi:10.01.2016 Rep Puanı: 0

dedeee yanıyo









Aradığınızı Bulamadınız Mı ?

Konuyu görüntüleyenler:
1 Misafir