1 Mayıs 2013 Çarşamba

Bir Otoparktaki Ücret Tarifesine Göre Fiyatlandırma Yapan Program


#include <stdio.h>
#include <stdlib.h>
//Fonksiyonlarından yapabimemiz için gerekli kütüphaneler eklendi
int main()//main fonksiyonunun başlangıcı
{
char Arac_tipi;                                                   //Gerekli değişkenler tanımlandı.
int Giris_gun,Giris_ay,Giris_saat,Giris_dakika;
int Cikis_gun,Cikis_ay,Cikis_saat,Cikis_dakika;
int Giris_birim_ucret=5,Gun_birim_ucret=20,Saat_birim_ucret=1;  //Bazılarına ilk değer atamaları yapılması gerekti.
int giris_dakikasi=0,bekleme_dakikasi=0,cikis_dakikasi=0;      //Değer kontrolü ve hesaplamalar için.
int Fark_gun,Fark_saat,Fark_dakika;
int Toplam_ucret=0;
//Kullanıcıdan Araç Tipini girmesini istedik.Ve girilen değer alındı.
printf("Arac tipini giriniz[b/B:binek, o/O:minibus/otobus, t/T:kamyon/tir]:n\n");
fflush(stdin);        //tampon bellegi temizlemek icin cagirildi
scanf("%c",&Arac_tipi);
 
printf("Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:n\n");
scanf("%d %d %d %d",&Giris_gun,&Giris_ay,&Giris_saat,&Giris_dakika);//Giriş zamanı ile ilgili veriler girildi.
 
printf("Cikis gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:n\n");
scanf("%d %d %d %d",&Cikis_gun,&Cikis_ay,&Cikis_saat,&Cikis_dakika);//Çıkış zamanı ile ilgili veriler girildi.
//---------------------------------------------------------------------
giris_dakikasi= Giris_gun*1440+Giris_saat*60+Giris_dakika;//Girilen değerlerin hepsi dakikaya dönüştürüldü.Ve toplandı.
//if((Giris_ay==1)) yani; Ocak ayındaysa zaten ilk ay olduğu için dakika eklenmez
//Ocak:O Şubat:Ş Mart:M Nisan:N Mayıs:M Haziran:H Temmuz:T Ağustos:A Eylül:E Ekim:E Kasım:K Aralık ayına gerek yok.
//Konular (while,switch/case) henüz işlenmediği için bu şekilde if yapımasından puan kırılmayacağı söylendiği için bu şekilde tasarlanmıştır.
if((Giris_ay==2)) {giris_dakikasi+=31*1440; }//Şubat   ayındaysa Ocak dakikaları eklenir.
if((Giris_ay==3)) {giris_dakikasi+=59*1440; }//Mart    ayındaysa O+Ş  dakikaları eklenir.
if((Giris_ay==4)) {giris_dakikasi+=90*1440; }//Nisan   ayındaysa O+Ş+M  dakikaları eklenir.
if((Giris_ay==5)) {giris_dakikasi+=120*1440;}//Mayıs   ayındaysa O+Ş+M+N dakikaları eklenir.
if((Giris_ay==6)) {giris_dakikasi+=151*1440;}//Haziran ayındaysa O+Ş+M+N+M  dakikaları eklenir.
if((Giris_ay==7)) {giris_dakikasi+=181*1440;}//Temmuz  ayındaysa O+Ş+M+N+M+H  dakikaları eklenir.
if((Giris_ay==8)) {giris_dakikasi+=212*1440;}//Ağustos ayındaysa O+Ş+M+N+M+H+T dakikaları eklenir.
if((Giris_ay==9)) {giris_dakikasi+=243*1440;}//Eylül   ayındaysa O+Ş+M+N+M+H+T+A  dakikaları eklenir.
if((Giris_ay==10)){giris_dakikasi+=273*1440;}//Ekim    ayındaysa O+Ş+M+N+M+H+T+A+E  dakikaları eklenir.
if((Giris_ay==11)){giris_dakikasi+=304*1440;}//Kasım   ayındaysa O+Ş+M+N+M+H+T+A+E+E  dakikaları eklenir.
if((Giris_ay==12)){giris_dakikasi+=334*1440;}//Aralık  ayındaysa O+Ş+M+N+M+H+T+A+E+E+K  dakikaları eklenir.
//----------------Giriş anının dakika formatı bulundu----------------------------------------------------
cikis_dakikasi= Cikis_gun*1440+Cikis_saat*60+Cikis_dakika;//Girilen değerlerin hepsi dakikaya dönüştürüldü.Ve toplandı.
//if((Giris_ay==1)) yani; Ocak ayındaysa zaten ilk ay olduğu için dakika eklenmez
//Ocak:O Şubat:Ş Mart:M Nisan:N Mayıs:M Haziran:H Temmuz:T Ağustos:A Eylül:E Ekim:E Kasım:K Aralık ayına gerek yok.
 
if((Cikis_ay==2)) {cikis_dakikasi+=31*1440; }//Şubat   ayındaysa Ocak dakikaları eklenir.
if((Cikis_ay==3)) {cikis_dakikasi+=59*1440; }//Mart    ayındaysa O+Ş  dakikaları eklenir.
if((Cikis_ay==4)) {cikis_dakikasi+=90*1440; }//Nisan   ayındaysa O+Ş+M  dakikaları eklenir.
if((Cikis_ay==5)) {cikis_dakikasi+=120*1440;}//Mayıs   ayındaysa O+Ş+M+N dakikaları eklenir.
if((Cikis_ay==6)) {cikis_dakikasi+=151*1440;}//Haziran ayındaysa O+Ş+M+N+M  dakikaları eklenir.
if((Cikis_ay==7)) {cikis_dakikasi+=181*1440;}//Temmuz  ayındaysa O+Ş+M+N+M+H  dakikaları eklenir.
if((Cikis_ay==8)) {cikis_dakikasi+=212*1440;}//Ağustos ayındaysa O+Ş+M+N+M+H+T dakikaları eklenir.
if((Cikis_ay==9)) {cikis_dakikasi+=243*1440;}//Eylül   ayındaysa O+Ş+M+N+M+H+T+A  dakikaları eklenir.
if((Cikis_ay==10)){cikis_dakikasi+=273*1440;}//Ekim    ayındaysa O+Ş+M+N+M+H+T+A+E  dakikaları eklenir.
if((Cikis_ay==11)){cikis_dakikasi+=304*1440;}//Kasım   ayındaysa O+Ş+M+N+M+H+T+A+E+E  dakikaları eklenir.
if((Cikis_ay==12)){cikis_dakikasi+=334*1440;}//Aralık  ayındaysa O+Ş+M+N+M+H+T+A+E+E+K  dakikaları eklenir.
//-----------------Çıkış anının dakika formatı bulundu----------------------------------------------------
bekleme_dakikasi = cikis_dakikasi-giris_dakikasi; //Bekleme süressinin kaç dakika olduğu bulunur.
Fark_gun=bekleme_dakikasi/1440 ;          //Dakika formatındaki sürenin kaç günü içerdiği bulunur.
Fark_saat=(bekleme_dakikasi%1440)/60 ;   //Dakika formatındaki sürenin kaç saati içerdiği bulunur.
Fark_dakika=(bekleme_dakikasi%1440)%60 ;//Dakika formatindaki sürenin 0-60 dakika aralığındaki değeri bulunur.
 
printf("Otoparkta kaldiginiz sure:n"); //Otoparkta kalınan süre ekrana bastırılır.
printf("%d gun %d saat %d dakika n",Fark_gun,Fark_saat,Fark_dakika);
 
if((Arac_tipi=='b')||(Arac_tipi=='B')) //Araç Tipi Binekse
{
Toplam_ucret = Giris_birim_ucret*1 + Fark_gun*Gun_birim_ucret*1 + Fark_saat*Saat_birim_ucret*1 ;
//1 birim ücret alınacağı için sabit değerleri göstermelik olarak 1 ile çarpıldı.Toplam ücret hesaplandı.
if(Fark_dakika<20)//Dakika dilimi kontrolü yapılır.Dakika dilimi 20'den azsa fazlalık zaman ücrete tabi tutulmaz.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
else{
Toplam_ucret+=Saat_birim_ucret;//20'den küçük değilse fazlalık zaman 1 saatlik ücret olarak tahsis edilir.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);// Ve toplam ücret ekrana bastırılır.
}//else sonu
}//if((Arac_tipi=='b')||(Arac_tipi=='B')) sonu
elseif((Arac_tipi=='o')||(Arac_tipi=='O')){//Araç Tipi  minibüs/Otobüs ise
 
Toplam_ucret = Giris_birim_ucret*2 + Fark_gun*Gun_birim_ucret*2 + Fark_saat*Saat_birim_ucret*2 ;
//2 birim ücret alınacağı için sabit değerler  2 ile çarpıldı.Toplam ücret hesaplandı.
if(Fark_dakika<20)//Dakika dilimi kontrolü yapılır.Dakika dilimi 20'den azsa fazlalık zaman ücrete tabi tutulmaz.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
else{
Toplam_ucret+=2*Saat_birim_ucret;//20'den küçük değilse fazlalık zaman 1 saatlik ücret olarak tahsis edilir.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
}//else sonu
}//if((Arac_tipi=='o')||(Arac_tipi=='O')) sonu
else{//Hatali giriş söz konusu olmadığı için zaten geriye kamyon/tır Araç Tipi kaldığı için kontrole(if/else'e)gerek yoktur.
Toplam_ucret = Giris_birim_ucret*3 + Fark_gun*Gun_birim_ucret*3 + Fark_saat*Saat_birim_ucret*3 ;
//3 birim ücret alınacağı için sabit değerler  3 ile çarpıldı.Toplam ücret hesaplandı.
if(Fark_dakika<20)//Dakika dilimi kontrolü yapılır.Dakika dilimi 20'den azsa fazlalık zaman ücrete tabi tutulmaz.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
else{
Toplam_ucret+=3*Saat_birim_ucret;//20'den küçük değilse fazlalık zaman 1 saatlik ücret olarak tahsis edilir.
printf("Odemeniz gereken ucret: %dn",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
}//else sonu
}//else sonu
//else{ if((Arac_tipi=='o')||(Arac_tipi=='O')) sonu
 
getchar();
getchar();
return 0;
}//main fonksiyonunun sonu

Hiç yorum yok:

Yorum Gönder