Kod:
#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
else{ if((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