Forum

C# Birlikte Çalışma...
 
Bildirimler
Hepsini Temizle

[Çözüldü] C# Birlikte Çalışma Süresi hesabı

İlker Karabulut
(@coder-23)
Üye

Arkadaşlar merhaba sorum şu; bir üretim takip programı yapmaktayım. Bu programda birden fazla proses çalışmakta ve bu proseslerin birlikte çalışma süreleri hesaplanmak istenmektedir. Örnekleyecek olursam 1. proses saat 8.15 te çalışmaya balşadı ve 11.30 da durdu. 2. proses ise 9.24 te başladı 17.30 da durdu. Bunlar birlikte 9.24 ile 11.30 arası çalıştılar, 2 saat 6 dk birlikte çalışma süresidir. İstediğim şu, her proses için textboxlara giriş çıkış saati yazıp tek başına çalışmalarını hesaplasın ve birlikte çalıştıkları süreyi de ayrı hesaplasın. Teşekkür ederim.

Alıntı
Topic starter Gönderildi : 25/06/2021 09:02
Serkan Ateş
(@SerkanAtes)
Üye

Başlığınız soru değil talep olmuş. Forum üzerinden bu tarz destek vermiyoruz. Portalımızın yazılım tarafı çok aktif değil ancak makaleler bölümümüzü inceleyebilirsiniz.

https://www.cozumpark.com/makaleler/page/24/

 

CevapAlıntı
Gönderildi : 25/06/2021 12:42
İlker Karabulut
(@coder-23)
Üye

@SerkanAtes Hayır Serkan bey, ben sadece bu konuşa çalışmış veya herhangi bir fikri olan arkadaşın yorumda bulunması için yazdım. Örneğin bu yolu izleyin şöyle yapılabilir veyahut şu kod parçacığı işinizi kolaylaştırabilir demesi için sordum. Yoksa projemin %85 lik kısmı tamamlanmış durumda, amacım fikir alışverişi. Bana bunu yapın ben de copy-paste yapayım mantığında değilim.

CevapAlıntı
Topic starter Gönderildi : 25/06/2021 22:16
Serkan Ateş
(@SerkanAtes)
Üye

Öncelikle yapıcı yaklaşımınız için teşekkür ederim.
Daha sağlıklı bilgi vermek için projenizle ilgili daha detaylı bilgi edinmemiz gerekir ancak temel olarak aşağıdaki algoritmayı kurgulayabilirsiniz.
Hesaplama için oluşacak 3 temel durum mevcut. Örnek vermek gerekirse.

Name : Start - End
Value1 : 10:00 - 16:00
Value2 : 12:00 - 14:00
Value3 : 08:00 - 11:00
Value4 : 13:00 - 18:00

Fonksiyonumuz 2 aralığı karşılaştıracak. Aralıkları TimeRange1 ve TimeRange2 olarak ele alalım. O zaman algoritmamız şöyle şekillenecek.

Value1, Value2 ile karşılaştırıldığında oluşacak durum için (Durum1)
TimeRange1=Value1, TimeRange2=Value2
Koşul: TimeRange1.Start < TimeRange2.Start && TimeRange1.End > TimeRange2.End
Süre: TimeRange2.End - TimeRange2.Start

Value1, Value3 ile karşılaştırıldığında oluşacak durum için (Durum2)
TimeRange1=Value1, TimeRange2=Value3
Koşul: TimeRange1.Start > TimeRange2.Start && TimeRange1.Start < TimeRange2.End
Süre: TimeRange2.End - TimeRange1.Start

Value1, Value4 ile karşılaştırıldığında oluşacak durum için (Durum3)
TimeRange1=Value1, TimeRange2=Value4
Koşul: TimeRange1.Start < TimeRange2.Start && TimeRange1.End > TimeRange2.Start
Süre: TimeRange1.End - TimeRange2.Start

Oluşturacağınız fonksiyon bu 3 duruma uyanlar için hesaplama yaparak hesapladığı süreyi, uymayanlar için 0 değeri dönecek. Hesaplama esnasında mükerrer hesaplamanın önüne de geçmeniz gerekir. Örneğin, fonksiyona Value1 ile Value2 değerlerini gönderdikten sonra Value2 ile Value1 değerlerini karşılaştırmamalısınız. Zaten bir kez hesapladınız. Bu durumun oluşmaması için değerlerinizi bir dizide tuttuğunuzu varsayarsak döngü esnasında dizide aktif elemanı her zaman kendinden sonraki elemanlarla karşılaştırmalısınız.

Ne kadar sade veya anlaşılır oldu bilemiyorum, fonksiyonunuzun temel mantığı açısından fikir vereceğini düşünüyorum. İhtiyaçlarınıza göre gerekli revizyonları ilave edersiniz. İyi çalışmalar.

CevapAlıntı
Gönderildi : 25/06/2021 23:52
İlker Karabulut
(@coder-23)
Üye

@SerkanAtes İlginiz ve yardımınız için teşekkür ederim.

CevapAlıntı
Topic starter Gönderildi : 26/06/2021 08:02
Paylaş: