Herkese merhaba, programım calısıyor sorun; ekran cıktısı para donusumu yaparken virgullu sayılarda ıcermek zorunda 756,35TL gibi ancak bu kez eyer sonuc tam bir sayı ise 756TL yerine 756,00TL yazdırıyor ben 756TL yazdırıp virgulden sonraki sıfırların gozukmesini istemiyorum. Cast islemide yapmaya calıstım olmadı hatam nedir yardım eder misiniz?
scanf("%d",&x); switch(x){ case 1: a=1*hotel(); break;
case 2: a=2*hotel(); break;
case 3: a=3*hotel(); break;
case 4: a=3*hotel(); break;
case 5: a=2*hotel(); break; default: printf("please enter number (1-5) ((1)Turkey\n(2)Brazil\n(3)Spain\n(4)Greece\n(5)Japan\n) "); break; }
printf("\n Please enter food cost:"); scanf("%d",&food); a=food+a;
printf("\n Please enter entertainment cost:"); scanf("%d",&entertainment); a=entertainment+a;
printf("\n Please select currency \n");
printf("(1)1 TRY\n(2)2 USD \n(3)3 EUR\n");
scanf("%d",&y); switch(y){ case 1: c=1*a; printf("\n\n TOTAL COST=%5.2f TRY",c); break;
case 2: c=0.4709*a; printf("\n\n TOTAL COST=%5.2f USD",c); break;
case 3: c=0.348*a; printf("\n\n TOTAL COST=%5.2f EUR",c); break; // sadece virgulden sonra sifir varsa gozukmesin default: printf("plese enter number (1-3)"); break; }
printf("\nThank you for preferring HET! "); getch(); return 0; }
int hotel() { int y,b; printf("please select hotel quality \n");
printf("(1)1 star\n(2)2 star \n(3)3 star\n");
scanf("%d",&y); switch(y){ case 1: b=1*300; break;
case 2: b=2*300; break;
case 3: b=3*300; break;
default: printf("plese enter number (1-3)"); break; }
return b; }
para biriminin Türk Lirası olduğu seçenek %d ile yazdırılıp diğer seçenekler %5.2f ile yazdırılabilir. Çünkü TRY seçeeği sadece tamsayı diğer seçenekler virgüllü çıkıyor sanırım.
brk0001B
kullanıcısına yanıt
Eyer food cost u 3000000000000 gibi girip entertainment i de 20000000 gibi bi sayı girersem EUR icinde 51003564,00 EUR gosteriyor :) BU arada attıgım her meseja cevap verdiginiz için ayriyetten cok tesekkur ederim :)
o zaman total cost yazan case lere şöyle bir kod uygulanabilir.(math.h kütüphanesini ekleyerek) fmod(c,1.0) ifadesi c nin 1.0 göre float modu yani virgülden sonraki kısmı oluyor.
if(fmod(c,1.0)==0.0) printf("\n\n TOTAL COST=%d TRY",(int)c); else printf("\n\n TOTAL COST=%5.2f TRY",c);
fmod() fonksiyonuna baktım; double fmod( double a, double b ) : a sayısının b sayısına bölümünden kalanı verir.
Evet calısti! cok iyi düşünmüssünüz, yine cozdunuz problemimi... cok tesekkur ederim :)