Arama butonu
Bu konudaki kullanıcılar: 1 misafir
6
Cevap
497
Tıklama
0
Öne Çıkarma
C Programlama Dili İle ATM Örneği
M
2 yıl
Er
Konu Sahibi

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?




#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 (tutar > 1000) {

        printf("Yetersiz bakiye tekrar giriniz !!: ");
        scanf("%d", &tutar);
      }
        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;

}








< Bu mesaj bu kişi tarafından değiştirildi MasterYodaTR -- 11 Haziran 2023; 12:6:27 >

M
2 yıl
Er
Konu Sahibi

S
2 yıl
Teğmen

if (tutar > 1000) {

        printf("Yetersiz bakiye tekrar giriniz !!: ");
        scanf("%d", &tutar);
      }

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.


Bu mesaja 1 cevap geldi.
M
2 yıl
Er
Konu Sahibi

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.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @scapegoat111
S
2 yıl
Teğmen

#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 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @MasterYodaTR
T
2 yıl
Yarbay

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.



M
2 yıl
Er
Konu Sahibi

Çok teşekkür ederim. Çalıştı sayenizde.




Bu mesajda bahsedilenler: @scapegoat111
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.