enum Çözümleri
- Açıklamaları kodun içine yerleştirdim:
import std.stdio;
import std.conv;
enum İşlem { Çık, Toplama, Çıkarma, Çarpma, Bölme }
void main()
{
// Seçenekleri yazdırıyoruz
for (İşlem işlem; işlem <= İşlem.max; ++işlem) {
write(işlem, ": ", to!string(işlem), " ");
}
while (true) {
write("İşlem? ");
// Girişten yine de int olarak okumak zorundayız
int işlemKodu;
readf(" %s", &işlemKodu);
/*
Bu noktadan sonra sihirli sabitler yerine enum
değerler kullanacağız.
Girişten int olarak okuduğumuz için, bu int değerin
türünü İşlem'e dönüştürüyoruz
(Bu konuyu daha sonraki bir derste göreceğiz.)
*/
İşlem işlem = cast(İşlem)işlemKodu;
if (işlem == İşlem.Çık) {
writeln("Güle güle!");
break;
}
double birinci;
double ikinci;
double sonuç;
if ((işlem < İşlem.min) || (işlem > İşlem.max)) {
writeln("HATA: Geçersiz işlem");
continue;
}
write("Birinci sayı? ");
readf(" %s", &birinci);
write(" İkinci sayı? ");
readf(" %s", &ikinci);
switch (işlem) {
case İşlem.Toplama:
sonuç = birinci + ikinci;
break;
case İşlem.Çıkarma:
sonuç = birinci - ikinci;
break;
case İşlem.Çarpma:
sonuç = birinci * ikinci;
break;
case İşlem.Bölme:
sonuç = birinci / ikinci;
break;
default:
throw new Exception(
"HATA: Programda bir hata var;"
"buraya hiç gelmemeliydik");
}
writeln(" Sonuç: ", sonuç);
}
}