02 Kasım
2007
İZSU Su Faturası Hesaplama Programı

Bilgisayar & Bilmuh'cular için & C#

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    printf("Umut BENZER\n");
    printf("05-06-7670\n");
    printf("IZSU Aylik Su Tuketim Faturasi Duzenleme\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;
}

Dikkat: Çözümümü ödev gönderme süresi bittikten sonra web siteme ekledim, bir sorun olacağını sanmıyorum. Kaynak kodu sadece paylaşım amaçlı, bire bir kopyalamak yasak. İfade resmi

Bu kaynak koduyla 100 almış bulunmaktayım. İfade resmi

Bir yorum var

  1. Hey gizli bir şey keşfettin afferim :) Bunu buraya XHTML Validliğini sağlasın diye koydum. :)
  2. Bu yorumu tucasso 10 Kas 2007 tarihinde saat 19.52 iken yazdı.#

    ooo tebrik ederim İfade resmi

Yorum RSS'si

Siz de yazmak ister miydiniz?

Yorumlarınızda yazım kurallarına ve noktalama işaretlerine uymanızı rica ediyorum.

Ana Sayfa'ya git İletişelim MSN'den Bağlantı Kurun Kendimi Şanslı Hissediyorum! 22 kişi gelişmeleri RSS ile takip ediyor.