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!
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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 Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Uğur Bey'in yazdığı QuickSort'u kullandım ama Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.istenilen bir algoritmada kullanılabilir.
Herhangi bir basit problem, hakkında yeterince toplantı yapılarak, çözümsüz hale getirilebilir.

Cevapla
#3
Degisken kullanabiliyor muyuz ?
Topluluk mopluluk yok :/
Cevapla
#4
(28-11-2017, Saat: 20:14)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Degisken kullanabiliyor muyuz ?

Serbest ancak ek bir liste oluşturup tek tek ayırıp sonra birleştirip diğerlerini silmek yasak Shy
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Cevapla
#5
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.kullanı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


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [+10 Puan] String Manipülasyon İşlemleri Abdullah ILGAZ 16 2.440 20-04-2019, Saat: 00:48
Son Yorum: onurcan1977
  Bir Record'un içini doldurma (+20 puan) Tuğrul HELVACI 21 4.322 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 3.845 30-09-2017, Saat: 12:14
Son Yorum: ismailkocacan
  Dinamik nesne dizi kullanımı ve ram optimizasyonu Abdullah ILGAZ 3 1.186 25-09-2017, Saat: 13:51
Son Yorum: esistem
  Windows Mesajlaşma Sistemi Hk. Soru (+10 Puan) Tuğrul HELVACI 21 3.925 08-09-2017, Saat: 13:55
Son Yorum: ismailkocacan



Konuyu Okuyanlar: 1 Ziyaretçi