Kıyafet Kombinasyon Programı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
darrenjones
Üye
Mesajlar: 25
Kayıt: 12 Ara 2013 08:35

Kıyafet Kombinasyon Programı

Mesaj gönderen darrenjones »

Merhaba arkadaşlar basit bir program geliştiriyorum ancak matematiksel kısmında nasıl hesaplayacağımı bilemedim.

9 tane sayı değişkenin elle girildiği bir kombinasyon programı.

Kategoriler, Değişkenler ve değerleri şunlar:

1. Üst Giyim Kategorisi [Gömlekler(7 Tane),T-Shirtler(3 Tane),Kazaklar(3 Tane),Sweatshirtler(3 Tane)],
2. Alt Giyim Kategorisi [Pantolonlar(5 Tane) ve Eşorfman Altı(1 Adet)],
3. Dış Giyim Kategorisi [Montlar(2 Tane) ve Fermuarlı-Kapüşonlular(1 Adet)],
4. Ayakkabılar(2 Tane).

Bir kişi bu 4 kategoriden de bir seçeneği giymek zorunda. Bu 4 kategorik değişkenin kaç farklı şekilde giyilebileceğini hesaplatmak istiyorum. Ancak şöyle bir ayrım var. Taktir edersiniz ki 10'un 4'lü kombinasyonu mantıklı sonuç vermiyor. Yani hem pantolon hem eşorfman altı giyemezsiniz. Her kategoriden yalnızca bir seçeneğin göz önünde bulundurulması gerek. Ve yanlarında bulunan sayılarla birlikte farklı kombinasyonları hesaplaması gerek Örneğin; 2. Gömlek, 3. Pantolon, 2.Mont ve 1. Ayakkabı bir kombinasyondur, 1. Gömlek, 4. Pantolon,1.Kapüşonlu ve 2. Ayakkabı ayrı bir kombinasyondur. Bunları ayrı ayrı göz önünde bulundurmalı.

Böyle bir şey yapılabilir mi ? Karışık anlattıysam kusura bakmayın sorun daha detaylı açıklamaya çalışırım.

Programın taslak görüntüsü şöyle:

Resim
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen Ancestor »

Her kategoriyi kendi içlerinde çarparak ulaşılabilir sanırım.
((ÜstGiyim x AltGiyim) x Dış giyim) x Ayakkabı = Birinci ÜstGiyim kategorisinin giyim kombinasyonu.
AltGiyim, DışGiyim ve Ayakkabı kategorilerinin elemanlarını da kendi aralarında toplamanız gerekecek.
darrenjones
Üye
Mesajlar: 25
Kayıt: 12 Ara 2013 08:35

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen darrenjones »

Ancestor yazdı:Her kategoriyi kendi içlerinde çarparak ulaşılabilir sanırım.
((ÜstGiyim x AltGiyim) x Dış giyim) x Ayakkabı = Birinci ÜstGiyim kategorisinin giyim kombinasyonu.
AltGiyim, DışGiyim ve Ayakkabı kategorilerinin elemanlarını da kendi aralarında toplamanız gerekecek.
Bunun için girilen her değer için bir değişken mi oluşturmak gerekiyor?

Yani şöyle yapılabilir mi: Girilen tüm değerlerin toplamı 27.

Bu değerler kadar yani 27 tane değişkeni program kendi oluşturup bunları kendi içinde kategorik olarak çarpabilir mi?

Ya da 4 tane dizi oluşturup program onların içinde kendi değişkenlerini yaratıp dizileri birbirleriyle kombinasyona sokabilir mi?
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen Ancestor »

Oluşturulan kategorilerin sayıları fazla ise bunlar için bi döngü kurabilirsiniz sanırım.
Bundan önce Form'a koyulan editlerin isimlerini kendinize göre düzenleyin.
Mesela AltGiyim kategorisindeki editler AltGiyim1 AltGiyim2 AltGiyim3... gibi isimlendirilmiş olsun.

Kod: Tümünü seç

var
AltGiyimToplam, a : integer;
begin

AltGiyimToplam := 0;
for a := 1 to ComponentCount-1 do begin
AltGiyimToplam := AltGiyimToplam + StrToInt(TEdit(FindComponent('AltGiyim'+IntToStr(a))).Text);
end;

end;
Burada AltGiyim kategorilerindeki tüm rakamları toplamış olduk. Diğer kategoriler içinde böyle birşey yapıp, en son birinci ana kategori elemanları ile aynı mantıkla çarptırabilirsiniz.
darrenjones
Üye
Mesajlar: 25
Kayıt: 12 Ara 2013 08:35

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen darrenjones »

Ancestor yazdı:Oluşturulan kategorilerin sayıları fazla ise bunlar için bi döngü kurabilirsiniz sanırım.
Bundan önce Form'a koyulan editlerin isimlerini kendinize göre düzenleyin.
Mesela AltGiyim kategorisindeki editler AltGiyim1 AltGiyim2 AltGiyim3... gibi isimlendirilmiş olsun.

Kod: Tümünü seç

var
AltGiyimToplam, a : integer;
begin

AltGiyimToplam := 0;
for a := 1 to ComponentCount-1 do begin
AltGiyimToplam := AltGiyimToplam + StrToInt(TEdit(FindComponent('AltGiyim'+IntToStr(a))).Text);
end;

end;
Burada AltGiyim kategorilerindeki tüm rakamları toplamış olduk. Diğer kategoriler içinde böyle birşey yapıp, en son birinci ana kategori elemanları ile aynı mantıkla çarptırabilirsiniz.
Kodu şöyle yazdım:

var
UstGiyimToplam, a : integer;
AltGiyimToplam, b : integer;
DisGiyimToplam, c : integer;
AyakkabiToplam, d : integer;
begin
UstGiyimToplam := 0;
AltGiyimToplam := 0;
DisGiyimToplam := 0;
AyakkabiToplam := 0;
for a := 1 to ComponentCount-1 do
begin
UstGiyimToplam := UstGiyimToplam + StrToInt(TEdit(FindComponent('UstGiyim'+IntToStr(a))).Text);
end;
for b := 1 to ComponentCount-1 do
begin
AltGiyimToplam := AltGiyimToplam + StrToInt(TEdit(FindComponent('AltGiyim'+IntToStr(b))).Text);
end;
for c := 1 to ComponentCount-1 do
begin
DisGiyimToplam := DisGiyimToplam + StrToInt(TEdit(FindComponent('DisGiyim'+IntToStr(c))).Text);
end;
for d := 1 to ComponentCount-1 do
begin
AyakkabiToplam := AyakkabiToplam + StrToInt(TEdit(FindComponent('Ayakkabi'+IntToStr(d))).Text);
end;

end;

Yalnız birinci üst giyim kategorisi kombinasyonunda ne demek istediğinizi anlamadım. Siz buna uygun olarak yazabilir misiniz kombinasyon hesabını?
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen Ancestor »

Umarım yanlış yapmamışımdır, aşağıdaki gibi dener misiniz.
UstGiyim için yapılan döngüyü silin en alt kısma bunu ekleyin

Kod: Tümünü seç

var
.......
GenelToplam : integer;
begin
......
......
GenelToplam := 0;
for a := 1 to ComponentCount-1 do
    begin
    GenelToplam := GenelToplam + (StrToInt(TEdit(FindComponent('UstGiyim'+IntToStr(a))).Text) * (AltGiyimToplam * (DisGiyimToplam * AyakkabiToplam)));
    end;
darrenjones
Üye
Mesajlar: 25
Kayıt: 12 Ara 2013 08:35

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen darrenjones »

Ancestor yazdı:Umarım yanlış yapmamışımdır, aşağıdaki gibi dener misiniz.
UstGiyim için yapılan döngüyü silin en alt kısma bunu ekleyin

Kod: Tümünü seç

var
.......
GenelToplam : integer;
begin
......
......
GenelToplam := 0;
for a := 1 to ComponentCount-1 do
    begin
    GenelToplam := GenelToplam + (StrToInt(TEdit(FindComponent('UstGiyim'+IntToStr(a))).Text) * (AltGiyimToplam * (DisGiyimToplam * AyakkabiToplam)));
    end;
var
GenelToplam, a : integer;
AltGiyimToplam, b : integer;
DisGiyimToplam, c : integer;
AyakkabiToplam, d : integer;
begin

AltGiyimToplam := 0;
DisGiyimToplam := 0;
AyakkabiToplam := 0;
for b := 1 to ComponentCount-1 do
begin
AltGiyimToplam := AltGiyimToplam + StrToInt(TEdit(FindComponent('AltGiyim'+IntToStr(b))).Text);
end;
for c := 1 to ComponentCount-1 do
begin
DisGiyimToplam := DisGiyimToplam + StrToInt(TEdit(FindComponent('DisGiyim'+IntToStr(c))).Text);
end;
for d := 1 to ComponentCount-1 do
begin
AyakkabiToplam := AyakkabiToplam + StrToInt(TEdit(FindComponent('Ayakkabi'+IntToStr(d))).Text);
end;
GenelToplam := 0;
for a := 1 to ComponentCount-1 do
begin
GenelToplam := GenelToplam + (StrToInt(TEdit(FindComponent('UstGiyim'+IntToStr(a))).Text) * (AltGiyimToplam * (DisGiyimToplam * AyakkabiToplam)));
end;
Label11.Caption:=IntToStr(GenelToplam);
end;

" is not a valid integer value dedi. Edit'e girilenleri sayıya çeviremiyor.
mehmetantalya
Üye
Mesajlar: 189
Kayıt: 30 Eyl 2013 10:17

Re: Kıyafet Kombinasyon Programı

Mesaj gönderen mehmetantalya »

Editlarda sanirim deger girilmeyenler mevcut. o sebeple integer cevirirken edit bosmu degilmi kontrolu yapmalisiniz.
Cevapla