Program İçin Algoritma Önerisi
-
Arkadaşlar,
Konu başlığı saçma oldu ancak baya bir uykusuz olduğumdan saçmaladım sanırım. Şimdi şöyle bir programı c yada excel'de yapmam gerekiyor.
Hacimleri birbirinden farklı AMA belirli 10 tane tank var. Bu 10 tane tanka, sayıları 1 ile 10 arasında, yoğunluğu belirli sıvılardan bana söylenen ağırlıklarda doldurmam gerekiyor. En az sayıda ve mümkün olduğunca efektif olarak tank kullanarak, bu sıvıları bu tanklara nasıl doldururum?
Örnek veriyorum;
X sıvısı - yoğunluk 0,7 - 10ton
Y sıvısı - yoğunluk 1,3 - 15 ton gibi....
Algoritmayı oturtamadığım için bir türlü giriş yapamıyorum. Neyi neye göre nasıl deneyeceğim?! Yardımcı olacak varsa çok sevinirim.
-
cizik
-
Sorunuzdan herşey anlaşılmıyor yada ben açım aklım basmıyor. Yinede yoğunluğu en yüksek olan sıvıyı en büyük hacimli tank'a basarsan en az tank la en çok sıvı doldurmuş olursun.
-
Şimdi hocam şöyle anlatayım;
Elimde 20 tane tank var ve hepsinin hacimleri aşağıdaki gibi;
1P - 557,1 m3
1S - 559,5
2P - 828,7
2S - 827,9
3P - 271,5
3S - 273,1
4P - 667,6
4S - 667,8
5P - 892,2
5S - 895,5
6P - 728,5
6S - 723,9
7P - 1116,6
7S - 1118,5
8P - 385,7
8S - 391,2
9P - 605,3
9S - 604,2
10P - 444,6
10S - 445,8
Tanklara koyacağım sıvılar;
3580mts Ethanol (density:0,79)
2500mts Ethanol (density:0,79)
2000mts ETAC (density:0,9)
830mts Ethanol (density:0,815)
1090mts Ethanol (density:0,79)
Programcığın bu sıvıları birbirine karıştırmadan, tanklara dağıtmasını istiyorum. Ancak if yada case'ler ile bunu yapamadım.
-
bunu yaparken en az sayıda tank kullanması gerekiyor değil mi? yanlış anlamadım?
edit:
ne kadar fazla olasılık kullanılırsa verimlilik o kadar artacaktır burada.
yani birden fazla senaryo üretip sonuçları karşılaştırmak geliyor aklıma.
sıvıları baz al; dağıtmaya en fazladan başla, en azdan başla, ortancadan başla...
tankları baz al; dağıtmaya en büyük tankla başla, en küçük tank...
bir kaç kere de rastgele paylaştır.
sonunda elde edilen değerleri karşılaştır, en verimlisini kullan.
veya (programın verimi senin için önemli değilse)
rastgele ama belirlediğin kurallar dahilinde yüzlerce, binlerce kez paylaştır, en verimlisini kullan.
moi tarafından 25/Haz/13 18:31 tarihinde düzenlenmiştir -
bu iş sanki biraz sayısal hesap dersine giriyor.
bir sürü bilinmeyen var ve yeteri kadar denklem yok.
-
Olay tamamen optimizasyon ve olasılık işine giriyor.
@Moi, evet, mümkün olduğunca az sayıda tank kullanması gerekiyor. -
bilmediğimden soruyorum, sıvıların yoğunluğu ne için veriliyor hocam
-
http://www.cprogramming.com/tutorial/c/lesson16.html
recursive function kullanabilirsin işini görür gibi
http://www.cagataycebi.com/programming/c_programming/c_programming_10.html
-
@İsot;
Yüklenecek sıvıların hacimlerinin hesaplanması için.
@SinusX;
Hemen kontrol ediyorum.
-
Hacim yanlis anlamadiysam bardak misali dolduracan...
Her tankin bir kapasitesi var... Bunlari bir tabloda tutabilirsin.. Veya class ile yapabilirsin
Cesit cesit sivilar var. Her sivninda yogunluguna gore kapladigi hacim var...
Bunlarida ayri bir tabloda tutabilirsin....Hesaplaman gerek tanki dolduruken... Koyacagin sivin hacmi. Eger tankta o kdr bos yer var ise tanka dolduracan
Eger yok ise doldurmayacan