Arkadaşlar aşağıda ATM örneği adı altında C programlama dili ile yazmış olduğum kodu paylaşıyorum. Case 2,3 ve 4 'de sorun yok. Fakat Case 1'in program çıktısında : Mevcut Bakiyem=1000TL yazıyor. Çekmek istediğim tutar kısmına 1000TL yazıyorum. Yeni Bakiyemi 0 TL olarak gösteriyor. İlk Çıktımı Doğru veriyor. Fakat tekrardan param olmamasına rağmen, tutar çekmek istediğim zaman - (eksi) bakiyeye iniyor. Programın Çıktısını Resim Olarak Da paylaşıyorum. Yardımcı olur musunuz?
< Bu mesaj bu kişi tarafından değiştirildi MasterYodaTR -- 11 Haziran 2023; 12:6:27 > |
C Programlama Dili İle ATM Örneği
-
-
-
if (tutar > 1000) { printf("Yetersiz bakiye tekrar giriniz !!: "); scanf("%d", &tutar); }
Kod
Yığını:tutar değil bakiyeyi kontrol et.
adamdan tutarı al, sonra çıkarma işlemini yap. adamın bakiyesi eksiye düşüyorsa işleme izin verme.
kolay gelsin.
-
Sizin dediğiniz şekilde yapıyorum fakat olmuyor.
Ayrıca tutar yazmamda ki amaç, olmayan bir parayı çekmek istememem.
örneğin:
1000 TL'm var iken 5000TL çekimine izin vermiyorum.Kod Çalışıyor fakat,
2.Kez döngüye girdiğim zaman, 5000TL 'yi çekiyor ve eksi bakiyeye düşüyorum.
-
#include <stdio.h>
int main()
{
int bakiye = 1000;
int islem=1,tutar;
printf("Bakiyeniz: %d", bakiye);
printf("\n\n**** ISLEMLER ****\n");
printf("1. Para Cekme\n");
printf("2. Para Yatirma\n");
printf("3. Para Bakiye Sorgulama\n");
printf("4. Kart Iade\n");
while(islem != 4) {
printf("\n\nIsleminizi giriniz: ");
scanf("%d", &islem);
switch (islem) {
case 1:
printf("Bakiyeniz : %d\n", bakiye);
printf("Cekmek istediginiz tutari giriniz : ");
scanf("%d", &tutar);
if (bakiye-tutar<0) {
printf("Yetersiz bakiye yeni islem giriniz !!: ");
break;
}
bakiye -= tutar;
printf("Yeni Bakiyeniz : %d", bakiye);
break;
case 2:
printf("Bakiyeniz : %d\n", bakiye);
printf("Yatirmak istediginiz tutari giriniz : ");
scanf("%d", &tutar);
bakiye += tutar;
printf("Yeni Bakiyeniz : %d", bakiye);
break;
case 3:
printf("Bakiyeniz : %d\n", bakiye);
break;
}
}
printf("Iyi gunler...");
return 0;
}
düzelttim, bir bakın para çekmeye bidaha
düzenleme: çekmek istediğin para hesabında yoksa o case'den çıkmalısın. yeni bir işlem talebi alınmalı. o yüzden de -'ye düşme durumunu gördüğünde case'den çıkıyorsun.
< Bu mesaj bu kişi tarafından değiştirildi scapegoat111 -- 11 Haziran 2023; 13:23:3 >
-
Ben C bilmiyorum ama Pascal ve Visual Basic biliyorum. Sizin case 1 eksik yazılmış. Diğerlerine bakmadım.
Case 1'e kontrol koşulu koymanız lazım
Para çekildikten sonra;
if bakiye = 0 then X: true veya 1 (boolean) kodunu yazıp en başa da İF NOT X THEN...
....
ELSE
PRİNTF YETERSİZ BAKİYE VS bloğuna lazım.
Case 2 ye de bakiye + ise x: 0 veya false yazmanız lazım.
-
Çok teşekkür ederim. Çalıştı sayenizde.
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X