Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Tek dizi içinde öncelik sırası belirleme (+10 puan)
#1
Sorumuz oldukça basit olsa da tek dizi içinde bunu yapmanızı talep edeceğim. Geçici olarak bir transfer objesi oluşturmak yasaktır.

10 tane ürün yer alıyor. Bunları bir TList içinde düşünün. 5 tanesi gömlek, 3 tanesi kravat, 2 tanesi de ceket. Önceliğimiz 5 tane gömlek sonra 3 kravat ve en son 2 ceket olacak şekilde sıralamayı elden geçirmek. Bunun için istediğiniz sıralama algoritmasını da kullanabilirsiniz.

Liste şu şekilde;

1. gömlek
2. kravat
3. ceket
4. gömlek
5. gömlek
6. kravat
7. gömlek
8. kravat
9. ceket
10. gömlek


İlk cevaplayan ve en kısa çözümü veren kişiye +10 puan
En kısa çözümü veren kişiye +9 puan
Doğru cevaplayan kişiye +8 puan

Başarılar!
{ talk is cheap show me the code. }
Cevapla
#2
program Project26;

{$APPTYPE CONSOLE}

{$R *.res}
{

1. gömlek
2. kravat
3. ceket
4. gömlek
5. gömlek
6. kravat
7. gömlek
8. kravat
9. ceket
10. gömlek
}
uses
 System.SysUtils;
 var
liste:array [0..9] of integer  ;
 const
    urunler : array[1..3] of string =
   (
     'gömlek', 'kravat', 'ceket '
   ) ;


  procedure QuickSort ( var aDizi: Array of Integer; aTaban, aTavan: Integer; aSadeceAraliktakiler: Boolean = FALSE);
 var
     Kucuk
   , Buyuk
   , Aradaki
   , Temp   : Integer;
 begin
   Kucuk   := aTaban;
   Buyuk   := aTavan;
   Aradaki := aDizi[ (Kucuk + Buyuk) div 2 ];
   repeat
     while ( aDizi[Kucuk] < Aradaki ) do Inc(Kucuk);
     while ( aDizi[Buyuk] > Aradaki ) do Dec(Buyuk);
     if (Kucuk <= Buyuk) then begin
         Temp := aDizi[Kucuk];
         aDizi[Kucuk] := aDizi[Buyuk];
         aDizi[Buyuk] := Temp;
         Inc(Kucuk) ;
         Dec(Buyuk) ;
     end;
   until (Kucuk > Buyuk);
   if (aSadeceAraliktakiler = FALSE) then begin
       if (Buyuk > aTaban) then QuickSort(aDizi, aTaban, Buyuk);
       if (Kucuk < aTavan) then QuickSort(aDizi, Kucuk, aTavan);
   end;
 end;

var
i:integer;
begin


liste[0]:=1;
liste[1]:=2;
liste[2]:=3;
liste[3]:=1;
liste[4]:=1;
liste[5]:=2;
liste[6]:=1;
liste[7]:=2;
liste[8]:=3;
liste[9]:=1;

 QuickSort(liste, Low(liste), High(liste)) ;
  for I := Low(liste) to High(liste) do writeln(inttostr(i+1)+'.'+urunler[liste[I]]);
 Readln;
end.



Ben Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUğur Bey'in yazdığı QuickSort'u kullandım ama Linkleri Görebilmeniz İçin Giriş yap veya Üye Olistenilen bir algoritmada kullanılabilir.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#3
Degisken kullanabiliyor muyuz ?
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#4
(28-11-2017, Saat: 20:14)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlDegisken kullanabiliyor muyuz ?

Serbest ancak ek bir liste oluşturup tek tek ayırıp sonra birleştirip diğerlerini silmek yasak Shy
{ talk is cheap show me the code. }
Cevapla
#5
Linkleri Görebilmeniz İçin Giriş yap veya Üye Olkullanılarak yapılabilir:


type
 TGiysi = (gömlek, kravat, ceket);  // ÖNCELİĞE GÖRE BU TİP OLUŞTURULMALI!!!

function CompareFunc(List: TStringList; Index1, Index2: Integer): Integer;
var
  Priorty1, Priorty2: Integer;
begin
  Priorty1 := GetEnumValue(TypeInfo(TGiysi), List[Index1]);
  Priorty2 := GetEnumValue(TypeInfo(TGiysi), List[Index2]);
  if Priorty1 > Priorty2 then
    Result := 1
  else if Priorty2 > Priorty1 then
    Result := -1
  else
    Result := 0;
end;

var
 Liste: TStringList;

...

Liste.Add('gömlek');
Liste.Add('kravat');
Liste.Add('ceket');
Liste.Add('gömlek');
Liste.Add('gömlek');
Liste.Add('kravat');
Liste.Add('gömlek');
Liste.Add('kravat');
Liste.Add('ceket');
Liste.Add('gömlek');
Liste.CustomSort(CompareFunc);
...

There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Bir Record'un içini doldurma (+20 puan) Tuğrul HELVACI 21 1.341 05-10-2017, Saat: 16:33
Son Yorum: ismailkocacan
  AV (Access Violation) nedir, neden bu hatayı alırız ? (+50 Puan) Tuğrul HELVACI 18 1.288 30-09-2017, Saat: 12:14
Son Yorum: ismailkocacan
  Dinamik nesne dizi kullanımı ve ram optimizasyonu Abdullah ILGAZ 3 298 25-09-2017, Saat: 13:51
Son Yorum: esistem
  Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) Tuğrul HELVACI 21 1.253 08-09-2017, Saat: 13:55
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi