💻 Bilgisayar, 💾 Programlama

İZSU Su Faturası Hesaplama Programı

İlk algoritma ödevimiz ve benim çözümüm…

#include <stdio.h>
#include <stdlib.h>

int main()
{
  printf("Umut BENZER\n");
  printf("05-06-7670\n");
  printf("Aylık Satış Raporu\n\n");

  int abonetipi;
  int okuay;
  int okugun;
  int guncelsayac;
  int oncekigun;
  int oncekisayac;

  int aydakigun=31;     // Girilen ayda kac gun oldugunu tutacak. Varsayilan olarak 31 atali.
  int oncekiay;       // Bunun nedeni bir yildaki aylarin cogunun 31 cekmesi. Etkilik acisindan
  int oncekiaydakigun=31; // ay sadece 31 cekmiyorsa ileride case dongusunde bir sarta girilecek.

  int kacgungecti;
  int tuketim;

  float kademe1;
  float kademe2;
  float kademe3;

  float kademe1fiyat;
  float kademe2fiyat;
  float kademe3fiyat;
  float kademe4fiyat;

  float fiyat;
  float kalan;      // Ileride kalan = tuketim gececek. Bunun nedeni ekrana bu ay 0.000 ton harcadiniz yerine
              // 0 ton harcadiniz yazdirmak. Yoksa tek float degiskeni de kullanabilirdim.

  printf("Abone tipi kodunu giriniz:\n");
  scanf("%d",&abonetipi);
  if (abonetipi>4 || abonetipi<1)
  {
    printf("Abone tipi hatali. Program sonlanacak.");
    return 0;
  }

  printf("Sayacin okundugu ay:\n");
  scanf("%d",&okuay);
  if (okuay>12 || okuay<1)
  {
    printf("Ay girdisi hatali. Program sonlanacak.");
    return 0;
  }

  printf("Sayacin okundugu gun:\n");
  scanf("%d",&okugun);
  switch (okuay)          // 1  OC 31
  {                 // 2  SU 28
    case 4:             // 3  MA 31
    case 6:             // 4  NI 30
    case 9:             // 5  MA 31
    case 11:            // 6  HA 30
      aydakigun = 30;       // 7  TE 31
      break;          // 8  AG 31
    case 2:             // 9  EY 30
      aydakigun = 28;       // 10 EK 31
  }                 // 11 KA 30
                    // 12 AR 31
  if (okugun<1 || okugun>aydakigun)
  {
    printf("%d. ayda %d. gun yok. Program sonlanacak.",okuay,okugun);
    return 0;
  }

  printf("Guncel sayac degeri:\n");
  scanf("%d",&guncelsayac);

  // ve sayac 0'dan az olamaz degil mi? En azindan bizim evdeki sayacda yok
  if (guncelsayac<0)
  {
    printf("Sayac eksi deger almaz. Sizi sistemden atiyoruz.");
    return 0;
  }

  printf("Bir onceki ay sayacin okundugu gun:\n");
  scanf("%d",&oncekigun);

  oncekiay = okuay - 1;
  if (oncekiay==0) oncekiay = 12;  // Eger güncel ay ocaksa, bir onceki ay araliktir.
  switch (oncekiay)         // 1  OC 31
  {                 // 2  SU 28
    case 4:             // 3  MA 31
    case 6:             // 4  NI 30
    case 9:             // 5  MA 31
    case 11:            // 6  HA 30
      oncekiaydakigun = 30;   // 7  TE 31
      break;          // 8  AG 31
    case 2:             // 9  EY 30
      oncekiaydakigun = 28;   // 10 EK 31
  }                 // 11 KA 30
                    // 12 AR 31
  if (oncekigun<1 || oncekigun>oncekiaydakigun)
  {
    printf("%d. ayda %d. gun yok. Program sonlanacak.",oncekiay,oncekigun);
    return 0;
  }

  printf("Eski sayac degeri:\n");
  scanf("%d",&oncekisayac);

  if (oncekisayac>guncelsayac)
  {
    printf("Gecen ayin sayac degeri simdikinden buyuk. Program sonlancak.");
    return 0;
  }

  // ve sayac 0'dan az olamaz degil mi? En azindan bizim evdeki sayacda yok
  if (oncekisayac<0)
  {
    printf("Sayac eksi deger almaz. Sizi sistemden atiyoruz.");
    return 0;
  }

  printf("\n*** Ciktilar ***\nAbone tipi: ");
  switch (abonetipi)
  {
    case 1:
      printf("Konut");  //Oncelikle ev kullanicilarini yazalim, cunku en cok onlardan var. Etkinlik meselesi.
      kademe1 = 13.0/30.0;
      kademe2 = 7.0/30.0;
      kademe3 = 8.0/3.0;

      kademe1fiyat = 1.19;
      kademe2fiyat = 3.09;
      kademe3fiyat = 5.00;
      kademe4fiyat = 6.13;
      break;
    case 2:
      printf("Konut disi");
      kademe1 = 0;
      kademe2 = 1.0/3.0;
      kademe3 = 1.0/3.0;

      kademe2fiyat = 4.13;
      kademe3fiyat = 4.75;
      kademe4fiyat = 6.53;
      break;
    case 3:
      printf("Resmi daire");
      kademe1 = 0;
      kademe2 = 0;
      kademe3 = 0;

      kademe4fiyat = 3.55;
      break;
    case 4:
      printf("Okul-Hastane");
      kademe1 = 0;
      kademe2 = 0;
      kademe3 = 0;

      kademe4fiyat = 2.84;
      break;
  }

  printf("\n\nOnceki sayac okuma bilgileri\n AY: %d, GUN: %d, SAYAC DEGERI: %d\n",oncekiay,oncekigun,oncekisayac);
  printf("\nSimdiki sayac okuma bilgileri\n AY: %d, GUN: %d, SAYAC DEGERI: %d\n\n",okuay,okugun,guncelsayac);

  kacgungecti = oncekiaydakigun - oncekigun + okugun;
  printf("Son sayac okunmasindan bu yana %d gun gecti.\n",kacgungecti);

  tuketim = guncelsayac - oncekisayac;
  printf("Bu ayin tuketim miktari: %d ton.\n",tuketim);
  // kalan degiskeni float tuketim int, cunku ekranda x.0000 ton yazmasini istemiyorum.

  kalan = tuketim;

  kademe1=kademe1*kacgungecti;
  kademe2=kademe2*kacgungecti;
  kademe3=kademe3*kacgungecti;

  if (kalan>kademe1) {
    // Eger program buraya geliyorsa demek ki bir kismi kademe1'den ucretlendirilecek, kalani 2'ye aktarilacak.
    fiyat = kademe1 * kademe1fiyat;
    kalan = kalan - kademe1;    // Kalan kismi kademe 2'ye gonder
    if (kalan>kademe2) {  // Odeme kademe 3'e de sarkacak.
      fiyat = fiyat + kademe2 * kademe2fiyat;
      kalan = kalan - kademe2; // Kalan kismi kademe 3'e gonder.
      if (kalan>kademe3) { // Odeme kademe 4'e de sarkacak, aboooo
        fiyat = fiyat + kademe3 * kademe3fiyat + (kalan - kademe3) * kademe4fiyat;
      } else {
        fiyat = fiyat + kalan * kademe3fiyat;
      }
    } else { // Odeme kademe 2 de tamamlaniyor.
      fiyat = fiyat + kalan * kademe2fiyat;
    }
  } else {   // Burada parantez olmasina gerek yok, farkindayim ama diger turlu kafam karisiyor.
    fiyat = kalan * kademe1fiyat; // Odemenin tamami 1.Kademeden gerceklesitiriyor...
  }

  float kdv;
  kdv = fiyat*8.0/108.0;
  printf ("KDV %8: %f\n",kdv);
  printf ("KDV DAHIL %f YTL ODENMESI GEREKIYOR.",fiyat);

  return 0;
}

Bu kaynak koduyla 100 almış bulunmaktayım. 🙂

İZSU Su Faturası Hesaplama Programı 3 yorum aldı.

  1. dostum çok güzel de bunu excel de programa dökebilir misin örnek olarak antalya asat ın sitesine bakabilirsin zira bizim apartmanda tek sayac var ve ben kullandığımdan fazla para ödüyorum yöneticinin eline kaldık 8 ay da 15 m3 kullanıma 68 tl fatura ödedim ki izsunun hesaplamalarında bu rakam farkı çıkıyor

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir