c++ ile basit bir asansör programı yazıyorum. temel olarak, 10 katlı binada 2 asansör var ve kişi tek bir düğmeyle bu asansörleri çağırabiliyor. çağırılan kata en yakın asansör hangisiyse o gelecek, ikisi de aynı mesafedeyse sağdaki gelecek şeklinde bir problem. son aşamaya geldim ve tıkandım.

asansörlerin katları ve kişinin çağırdığı kat arasındaki kıyaslamayı nasıl yapabilirim ? örneğin asansörün birisi 1. katta, diğeri 4. kattayken kişi 3. kattan çağırırsa 4. kattaki asansörün gelmesi gerek. bir sayıya olan en yakın sayıyı bulmalıyım yani ama çıkamadım içinden. gerekirse kodu da paylaşabilirim ama biraz uzun sayılır.


 

Yanlış anlamadıysam soruyu şöyle basit şekilde çözülebilir gibi.
Kişinin bulunduğu katı asansörlerin bulunduğu kattan çıkarın ve çıkan değerin mutlak değerini alın.Hangisi daha küçükse ona ait asansörü çağırın.
Örnek editi :
A kişinin katı B ve C Asansör katları.abs fonksiyonu stdlib.h içerisinde tanımlı.
if(abs(A-B)<(A-C))
cagir(B)
else
cagir(C)

bu_ne_bicim_nick

C++ bilmiyorum ama c# olsaydı if kullanırdım. A senin bulunduğun kat B ve C asansör katları.
İf( A-B> A-C)
C asansörü gelecek. Bu çıkarma işlemlerini mutlak değer içine alma varsa sonuç daha doğru olur. Eğer öyle bir şey yoksa onun için ayrı kod gerek.
İf( A-B< A-C)
B asansörü gelecek.

Umarım doğru anlamışımdır sorunu.

uyusam iyi olur

uzaklık eşit olduğunda ne olacak? ikisi de mi gelecek? hiç teknolojik değil. bence kod yazarken bunu da düşün hocam.

blue eyes white dragon

aynı gelirse rassal sayı üret tek sayı gelirse B asansörü, çift gelirse c asansörü gelsin :)

uyusam iyi olur
1

mobil görünümden çık