CryptoSuite.Org

Geri git   CryptoSuite.ORG || The Best Encryption Platform Of The World > Programlama > C-C++

C-C++ C-C++ Hakkında Herşey

Konu Bilgileri
Konu Başlığı
Otopark Ücreti Hesaplaması
Konudaki Cevap Sayısı
0
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
13

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 01-12-10, 14:49   #1 (permalink)
Member
 
efecannn - ait Kullanıcı Resmi (Avatar)

User ID : 3072
Messages : 297
Threads : 97
Thanks : 18
Rat : Poison
efecannn isimli Üye şimdilik offline konumundadır
CryptoSuite.Org
Standart Otopark Ücreti Hesaplaması

ark edilen süre ve araç türüne göre ücret hesaplayan programdır. Başlangıç seviseyiyesine göredir.

Bir otoparkta araç sahiplerinin ödemesi gereken ücret miktarını hesaplamak için bir program istenmektedir. Otoparka park edilen bir araç için aşağıdaki bilgiler programa girilecektir:

- Araç türü (b/B:binek, o/O:minibüs/otobüs, t/T:kamyon/tır)
- Giriş zamanı (ayrı ayrı sayısal değerler olarak gün, ay, saat ve dakika)
- Çıkış zamanı (ayrı ayrı sayısal değerler olarak gün, ay, saat ve dakika)

Veri girişleri sırasında hatalı giriş yapılmayacağı ve çıkış zamanının giriş zamanından sonraki bir zaman olarak girileceği belirtilmektedir.
Süre hesabı yapılırken Şubat ayının 28 gün kabul edileceği ve araç sahibinin ödemesi gereken ücretin aşağıdaki şekilde hesaplanacağı belirtilmektedir: Her araç için giriş birim ücretine ek olarak, her 24 saat için günlük birim ücret ve artan saat(ler) için saatlik birim ücret alınır. Artan dakika 20 dakikadan az ise dikkate alınmaz, fazla ise 1 saat kabul edilir. Giriş birim ücreti 5 TL, günlük birim ücret 20 TL ve saatlik birim ücret 1 TL?dir. B tipi araçlardan 1 birim, O tipi araçlardan 2 birim ve T tipi araçlardan 3 birim ücret alınır.
Buna göre, bir aracın otoparkta kaldığı süreyi (gün, saat ve dakika olarak) ve araç sahibinin ödemesi gereken ücret bilgisini ekrana yazdıran bir program yazınız.

ÖRNEK ÇALIŞTIRMALAR:

Arac tipini giriniz: [b/B:binek, o/O:minibus/otobüs, t/T:kamyon/tır]:
b
Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
19 10 9 20
Cikis gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
19 10 12 41
Otoparkta kaldiginiz sure:
0 gun 3 saat 21 dakika
Odemeniz gereken ucret:
9 TL

Arac tipini giriniz[b/B:binek, o/O:minibus/otobus, t/T:kamyon/tir]:
o
Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
19 10 9 59
Cikis gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
1 12 0 1
Otoparkta kaldiginiz sure:
42 gun 14 saat 2 dakika
Odemeniz gereken ucret:
1718 TL

Arac tipini giriniz[b/B:binek, o/O:minibus/otobus, t/T:kamyon/tir]:
T
Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
1 1 0 0
Cikis gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
1 3 0 0
Otoparkta kaldiginiz sure:
59 gun 0 saat 0 dakika
Odemeniz gereken ucret:
3555 TL

Arac tipini giriniz[b/B:binek, o/O:minibus/otobus, t/T:kamyon/tir]:
B
Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
31 5 23 50
Cikis gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:
1 6 0 5
Otoparkta kaldiginiz sure:
0 gun 0 saat 15 dakika
Odemeniz gereken ucret:
5 TL


ÇÖZÜM:
NOT:Sadece if/else metoduyla çözüm yapıldığı için en etkin çözüm değildir.ama öğreticidir.



Alıntı:
#include <stdio.h>//SAVAŞ YILDIZ Ege Üniversitesi Bilgisayar Mühendisliği Algortima ve Programlama 1 dersi 1. ödevidir.
#include <stdlib.h> //05070008569
//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");
fflush(stdin); //tampon bellegi temizlemek icin cagirildi
scanf("%c",&Arac_tipi);

printf("Giris gun, ay, saat ve dakikasini aralarinda bosluk birakarak giriniz:\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");
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: %d\n",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: %d\n",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: %d\n",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: %d\n",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: %d\n",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: %d\n",Toplam_ucret);//Ve toplam ücret ekrana bastırılır.
}//else sonu
}//else sonu
} //else{ if((Arac_tipi=='o')||(Arac_tipi=='O')) sonu
return 0;
}//main fonksiyonunun sonu
  Alıntı ile Cevapla
Cevapla

Bookmarks


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



WEZ Format +3. Şuan Saat: 11:30.