(Şimdilik "C" sorusunu etiketledim, ancak sendikaları destekleyen başka bir dilin farkındaysanız, bunu da kullanabilirsiniz.)
Göreviniz + - * /
, aşağıdaki yapı için dört standart matematiksel işleç oluşturmaktır:
union intfloat{
double f;
uint8_t h[8];
uint16_t i[4];
uint32_t j[2];
uint64_t k;
intfloat(double g){f = g;}
intfloat(){k = 0;}
}
böylece operasyonların kendileri yalnızca tamsayı parçayı manipüle eder veya bunlara erişir (böylece işlem sırasında herhangi bir zamanda çiftle karşılaştırılmamalıdır) ve sonuç tam olarak aynıdır (veya sayısal olmayan sonuçlar durumunda işlevsel olarak eşdeğerdir NaN
) karşılık gelen matematiksel işlem doğrudan double
onun yerine uygulanmış gibi .
Hangi tamsayı bölümünün değiştirileceğini, hatta belki de farklı operatörler arasında farklı bölümleri kullanarak seçebilirsiniz. (Bunu yapmak isteyip istemediğinizden emin olmasam da, sendikadaki herhangi bir alandan "imzasız" ı kaldırmayı da seçebilirsiniz.)
Skorunuz, dört operatörün her biri için karakter cinsinden kod uzunluğunun toplamıdır. En düşük puan kazanır.
IEEE 754 şartname bilmeyen bizler için, burada Wikipedia'da bu konuda bir makale.
Düzenlemeler:
03-06 08:47 İç yapıya inşaatçılar eklendi. İkili / vb. Manuel olarak ayarlamak yerine bunları test için kullanmanıza izin verilir.
intstruct
açısından uint8_8
, uint16_t
ve böylece mutlak büyüklükleri olarak short
, int
ve benzeri standardında tanımlanmamıştır (her tip asgari boyutuna sahip ve boyut olarak sıkı bir sipariş var, ama bu kadar).