Prog.Odevi: Her Vezir bir sonrakini yokediyor,sağ kalan tek?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- raikkonen21
- Üye
- Mesajlar: 49
- Kayıt: 02 Nis 2007 10:02
- Konum: Konya
afferin...
gazı verdin ödevi arkadaşlara yaptırdın.
estafurullah
mrmarman hocam inanın caba gosterıyorum arastırıyorum..sormadan tam iki saat ugrastım o ılk verdıgınız kod uzerınde..ıkı de bır sormk ta yıldırır ınsanı.ben delphıde daha yolun cok basındayım..ama gordukce yaptıkca canım daha cok ıstıyor..sizin yazdıgınız kodlar dusunce tarzınız cok guzel.bize okulda anlatılmıyor o kadar.hersey ogrencılerden beklenıyor..proje dersım var mesela delphıde excel yapacaz vızelere kadar..arastırdım stgrıtte yapılıyormus..ararken baktım f1book excel ıne nerdeyse aynı..sıtenın arama mooturu varmıs 20mb onu ındırdım baktım..f1book kullanımı ıle ılgı yeterlı dokuman bulamadım.ben bıraz fazla agladım galıba..
inan hocam calısıyorum cabalıyorum..odev ver yapıyım:) ogrencın oluyum senın
gercekten programcılıgınıza hayran kaldım ılk defa bır forumdan bu kadar ılgı bu kadar alaka alıyorum.
Ben henüz kod yazmadım, çünkü @raikkonen21'in çabasını kod olarak daha göremedim. demıssınız ben daha forumda yenıyım ne demek ıstedıgınızı de tam anlamadım.
yardımlarınız ıcın cok tesekkur ederım vermıs oldugunuz dokumana calısacagım..su an gonderdım zaten orneklerı..calısmak kaldı sadece.dunden berı basımı kaldıramıyorum zaten
ustume gelmeyın abıler ya 
gazı verdin ödevi arkadaşlara yaptırdın.

estafurullah

mrmarman hocam inanın caba gosterıyorum arastırıyorum..sormadan tam iki saat ugrastım o ılk verdıgınız kod uzerınde..ıkı de bır sormk ta yıldırır ınsanı.ben delphıde daha yolun cok basındayım..ama gordukce yaptıkca canım daha cok ıstıyor..sizin yazdıgınız kodlar dusunce tarzınız cok guzel.bize okulda anlatılmıyor o kadar.hersey ogrencılerden beklenıyor..proje dersım var mesela delphıde excel yapacaz vızelere kadar..arastırdım stgrıtte yapılıyormus..ararken baktım f1book excel ıne nerdeyse aynı..sıtenın arama mooturu varmıs 20mb onu ındırdım baktım..f1book kullanımı ıle ılgı yeterlı dokuman bulamadım.ben bıraz fazla agladım galıba..
inan hocam calısıyorum cabalıyorum..odev ver yapıyım:) ogrencın oluyum senın

Ben henüz kod yazmadım, çünkü @raikkonen21'in çabasını kod olarak daha göremedim. demıssınız ben daha forumda yenıyım ne demek ıstedıgınızı de tam anlamadım.
yardımlarınız ıcın cok tesekkur ederım vermıs oldugunuz dokumana calısacagım..su an gonderdım zaten orneklerı..calısmak kaldı sadece.dunden berı basımı kaldıramıyorum zaten


- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Anladığım kadarıyla öğretmenden beklentin fazla. Aklında bulunsun, öğretme yoktur öğrenme vardır. Bilim bu gün öğretmenin yerini klavuzluğa bırakmıştır. Öğretme yoksa ne vardır. Tabiki öğrenme. Öğrenme bireyde başlar ve biter. Öğretmen denilen şahıs ne işe yarar peki. Ortamı hazırlar, klavuzluk yapar, birey istediği zaman veya bireyde eksik gördüğü noktalarda yol gösterir. Öğrenebilmek için öğretmenini bu konuda zorlaman gerekiyor. Bir öğretmen bir ortamda bir konuyu her öğrenciye farklı farklı anlatmaz, anlatamaz. Ama öğrenciler farklı farklı öğrenirler. O yüzden öğretmenden beklentilerini yüksek tutma, tam tersine sıfır noktasında tutmaya çalış (tabi gerçek hayatta pek mümkün değil ama araştırdaktan sonra pek çok kaynak karşına çıkacaktır). Böyle olduğu zaman en kaliteli öğrenmeyi gerçekleştirirsin.raikkonen21 yazdı:... bize okulda anlatılmıyor o kadar.hersey ogrencılerden beklenıyor..
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- raikkonen21
- Üye
- Mesajlar: 49
- Kayıt: 02 Nis 2007 10:02
- Konum: Konya
haklısınız gercekten.ben bu konuda oz elestırı de yapıyorum kendımı de haklı gormuyorum..fakat hoca sıze strıng toplama vıze fınal ortalama gosterıp sınavda heceleme algorutması sorarsa bu da yanlıstır bence..daha emeklemeye yenı baslayan bır bebekten kosmasını ısteyemezsınız.ogrenme bıtmez ayrıca..ben bu konuda ısteklıyım..ogrenmek ıstıyorum..bu delphıyı ogrenecegımde..
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Maalesef bu da klavuzun hatasıdır. Eğer hem öğrenci hemde öğretmen olarak herkes işinin hakkını vererek çalışabilselerdi manzara bu kadar vahim olmazdı (ben hala şu ilk 500 üniversite sıralamasına giremedikya oraya takıldım kaldım). Neyse size kolay gelsin, bu taraflardan yardım isterseniz kimse yardımını esirgemiyor (maşallah) . 

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- raikkonen21
- Üye
- Mesajlar: 49
- Kayıt: 02 Nis 2007 10:02
- Konum: Konya
Tamam yılan hikayesine dönmeden kodu yazalım..
- Kullanımı ise şöyle
- Derslerinde başarılar...
Kod: Tümünü seç
Function SagKalan( VezirSayisi, IlkVezir: Integer ):Integer;
Var
Dizi : Array of Integer;
Konum, Sayac : Integer;
Olsun : Boolean;
begin
Result := -1;
Setlength(Dizi, VezirSayisi);
For Sayac := 0 to VezirSayisi-1 do Dizi[Sayac] := 1;
Konum := IlkVezir-2; // Vezir no 1'den sayac 0 'dan başlar...
// Ayrıca döngü içerisinde bir ilk +1 var
// Bu ikisini peşinen düşüyoruz...
Olsun := False;
Sayac := VezirSayisi;
Repeat
Inc(Konum);
If Konum > VezirSayisi-1 then Konum := 0;
If Dizi[Konum] > 0 then begin
If Olsun then begin
Dizi[Konum] := 0;
Dec(Sayac);
Olsun := False;
end else Olsun := True;
end;
Until Sayac = 1;
For Sayac := 0 to VezirSayisi-1 do
If Dizi[Sayac] <> 0 then Result := Sayac+1;
end;
Kod: Tümünü seç
Var
SansliVezir : Integer;
begin
SansliVezir := SagKalan( 100, 5 ); // 100 vezirden 5.inciye kılıç verilmişse
ShowMessage('Şanslı Vezir = '+ IntToStr(SansliVezir));
end;
- raikkonen21
- Üye
- Mesajlar: 49
- Kayıt: 02 Nis 2007 10:02
- Konum: Konya
yok hocam ben linked listlerle yapmaya çalıştım.mrmarman yazdı:- Sendeki component bazlı (TListBox vb.) bir VirtualArena olmalı. Dizilerle yaparsan aynen bu kadar hızlı olacaktır. ( Bilgisayar hızını ihmal edersek bendeki ortalama bir bilgisayar Notebook Dothah 1.6)
bendeki makinede bi notebook ama özelliklerini tam bilmiyorum.
Forma birtane spinedit birtanede button koydum
Kod: Tümünü seç
Type
TVezir=Record
vezirno:integer;
sonraki:Pointer;
End;
var
vezirler:Array of Tvezir;
kiliclivezir:tvezir;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
vezirsayisi:integer;
begin
vezirsayisi:=SpinEdit1.Value;
setlength(vezirler,vezirsayisi);
for i:=0 to vezirsayisi-1 do
begin
vezirler[i].vezirno:=i+1;
if i=vezirsayisi-1 then vezirler[i].sonraki:=@vezirler[0]
else vezirler[i].sonraki:=@vezirler[i+1];
end;
kiliclivezir:=vezirler[0];
while not (kiliclivezir.sonraki=NullStr) do
begin
kiliclivezir.sonraki:=tvezir(kiliclivezir.sonraki^).sonraki;
vezirler[kiliclivezir.vezirno-1].sonraki:=kiliclivezir.sonraki;
kiliclivezir:=tvezir(kiliclivezir.sonraki^);
if kiliclivezir.vezirno=tvezir(kiliclivezir.sonraki^).vezirno then
kiliclivezir.sonraki:=nullstr;
end;
showmessage(inttostr(kiliclivezir.vezirno));

Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Selam
@aslangeri linked list ile ilgili küçük bir hatırlatma yapmama izin verin, çünkü sizin kullandığınız sistem linked list değil, array oluyor.
Linked list, recordu içinde sonraki (ve opsiyonel olarak önceki) elemanın adresini tutarak oluşturulan liste. Sizin recordunuzun tanımlaması bu yönden doğru, ama şu satırlar recordun içindeki pointeri anlamsız kılıyor.
Oysa şu şekilde yapmanız daha mantıklı (en azından linked list için) olurdu (Not: Test ederek yazamıyorum, çünkü bilgisayarda herhangi bir programlama IDE'si yok)
no ve sonraki değişkenlerini initalize etmek gerekiyor, aceleden eklemedim
Private veya global tanımlayacağın tek değişken de aslında FirstItem olacak, diğerlerine gerek yok. Çünkü FirstItem'dan her istediğine erişebiliyorsun.
Ama bu problemde linked list yerine array veya list kullanmak daha mantıklı bence.
Kolay gelsin,
Bahadır Alkaç
@aslangeri linked list ile ilgili küçük bir hatırlatma yapmama izin verin, çünkü sizin kullandığınız sistem linked list değil, array oluyor.
Linked list, recordu içinde sonraki (ve opsiyonel olarak önceki) elemanın adresini tutarak oluşturulan liste. Sizin recordunuzun tanımlaması bu yönden doğru, ama şu satırlar recordun içindeki pointeri anlamsız kılıyor.
Kod: Tümünü seç
vezirsayisi:=SpinEdit1.Value;
setlength(vezirler,vezirsayisi);
Kod: Tümünü seç
type
PVezir = ^TVezir;
TVezir = record
vezirno:integer;
sonraki:PVezir;
end;
const int MaxVezir = 15;
var
FirstItem:PVezir;
tmp:PVezir;
Counter:integer;
begin
New(FirstItem);
tmp := FirstItem;
while (Counter < MaxVezir) do
begin
New(tmp.sonraki);
tmp := tmp.sonraki;
inc(Counter, 1);
end;
end;

Ama bu problemde linked list yerine array veya list kullanmak daha mantıklı bence.
Kolay gelsin,
Bahadır Alkaç
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Sizlerin verdiği bu kodlardan ve mrmarman hocam sizin verdiğiniz listelerden çıkan sonuca göre bir formül ortaya çıkıyor. Her 2'nin kuvvetinde hep ilk eleman şanslı olarak kalıyor ve sıralı devam ediyor. Buna göre şu fonksiyonu yazmak ne derece doğru olur? (aslında kabul ediyorum matematiksel ispat ister ama ben pek beceremem
)

Kod: Tümünü seç
function KimKaldi(const ElemanSayisi:Integer;const ilkKimBasladi:Integer=1):Integer;
begin
Result:=1;
while Result<=ElemanSayisi do Result:=Result shl 1;
Result:=ElemanSayisi-(Result shr 1);
Result:=2*Result+ilkKimBasladi;
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .