kümeler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hacikisi
Üye
Mesajlar: 64
Kayıt: 24 Şub 2004 07:29
Konum: Gaziantep

kümeler

Mesaj gönderen hacikisi »

matematik de kümeler ile yapılan tüm işlemleri program ile yapabilmek .

Örnek: A={1,2,3,4,5} kümesi ve B={4,5,6,7,8} kümeleri üzerinde bu kümeleri edit kutularına yazmak suretiyle birleşimlerini, kesişimlerini ve belirleyeceğimiz sınır sayısı (örneğin 1den 10 a kadar sayılar gibi) üzerinde içinde bulunmayan elemanlarının bulunmasını gerçekleştirmesini istiyorum.

Yani: A birleşim B ={1,2,3,4,5,6,7,8}, A kesişim B={4,5}, A fark B={1,2,3}, sınır sayısı = 10 olsun. A kümesinde olmayanlar kümesi A'={6,7,8,9,10}, B kümesinde olmayanlar kümesi B'={1,2,3,9,10} v.s. şeklinde çözümler üretebilecek bir program olmalı.
Sql kodlarıni yazarak yardımcı olacak ardakaşlara şimdiden selamlar.
Siz İman Etmedikçe Cennete Giremezsiniz. Birbirinizi Sevmedikçede İman Etmiş Olamazsınız.

Hz.Muhammed (S.A.V.)
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- SQL kodlarını sana bırakıyorum... Çok basit bir kurgu yapacaksın...

- Delphi'de işini görecek bir fonksiyon bulamazsan, basit düşünüp bunu kendin kurgulamalısın...

- Başarılar...

- Örnek :

Kod: Tümünü seç

Procedure BirlesimKumesi(A, B, C:TStringList);
Var
  Sayac: Integer;
begin
  Sayac := 0;
  C.Clear;
  C.AddStrings(B);
  Repeat
    If C.IndexOf(A[Sayac]) < 0 then C.Add(A[Sayac]); // Aynı elemanlı olanları atlar...
    Inc(Sayac);
  Until Sayac >= A.Count;
  C.Sort;
end;

Kod: Tümünü seç

Procedure KesisimKumesi(A, B, C:TStringList);
Var
  Sayac: Integer;
begin
  Sayac := 0;
  C.Clear;
  Repeat
    If B.IndexOf(A[Sayac]) >= 0 then C.Add(A[Sayac]); // sadece aynı olan elemanları alır, diğerlerini atlar...
    Inc(Sayac);
  Until Sayac >= A.Count;
  C.Sort;
end;

Kod: Tümünü seç

Procedure FarkKumesi(A, B, C:TStringList);
Var
  Sayac: Integer;
begin
  Sayac := 0;
  C.Clear;
  Repeat
    If B.IndexOf(A[Sayac]) < 0 then C.Add(A[Sayac]); // fark kümesi...
    Inc(Sayac);
  Until Sayac >= A.Count;
  C.Sort;
end;

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Var
  A,B,C : TStringList;
begin
  A := TStringList.Create;
  B := TStringList.Create;
  C := TStringList.Create;
  A.CommaText := '1,2,3,4,5'; // TEdit'e de yönlendirilebilir...
  B.CommaText := '4,5,6,7,8';

  BirlesimKumesi(A, B, C);
  ShowMessage(C.Text);

  KesisimKumesi(A, B, C);
  ShowMessage(C.Text);

  FarkKumesi(A, B, C);
  ShowMessage(C.Text);

  C.Free;
  B.Free;
  A.Free;
end;
Resim
Resim ....Resim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

SQL de bilmem ama delphi de bu sekilde kume islemlerişni yapabilirsin

type altında
item=1..9;
kume=set of item;

var altında
kumedeg1,kumedeg2:kume;
fark:kume;

atamalar
kumedeg1:=[1,2,3];
kumedeg2:=[3,4,5,6];
fark:=kumedeg1-kumedeg2;//sonuc [1,2]
birlesim:=kumedeg1+kumedeg2;//sonuc [1,2,3,4,5,6]
kesisim:=kumedeg1*kumedeg2;//sonuc [3];

denemedim ama bu sekilde olması gerek
ÜŞENME,ERTELEME,VAZGEÇME
Cevapla