[Çözüldü] Bu programı diziler ve fonksiyon kullanarak nasıl yaparım?

Başlatan mesute, 04 Ocak 2017 - 23:58:32

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

mesute

/*Bir park yeri işletmesi, 3 saate kadar yapılan parklar için minimum 2.00$ almaktadır. 3
saatin geçilmesi halinde her saat için 0.5$ almaktadır. Maksimum alınan para ise 24 saatlik
park edilmesi halinde 10.00$'dır. 24 saatten daha uzun hiç bir aracın park etmediğini kabul
ediniz. Dün bu park yerine park etmiş olan üç müşterinin ödemelerini hesaplayan ve yazdıran
bir programı yazınız.(Kullanıcı, her müşterinin park saatini girmeli ve çıktı düzgün bir çizelge
şeklinde olmalıdır ve dünün toplam gelirini hesaplamalıdır. Program ucretHesapla adı altına
bir fonksiyonda her müşteri için ücreti hesaplamalı*/


#include <stdio.h>

float t1,t2,t3,t4;
int main()
{

int a;
float x,y,z,toplam,toplam1,toplam2,toplam3;
toplam=0; toplam1=0; toplam2=0; toplam3=0;

printf("1. Araba Park süresi (saat):");
scanf("%f",&x);
printf("2. Araba Park süresi (saat):");
scanf("%f",&y);
printf("3. Araba Park süresi (saat):");
scanf("%f",&z);

printf("Araba      Saat      Ücret\n");
for (a=1; a<=3; a++)
{
if (a==1){
if (x==0 || x<0)
printf("Lütfen geçerli bir değer giriniz\n");
if (x>0 && x<3)
{
toplam1=2;
printf("%d      %f      %f\n",a,x,toplam1);
}
if(x>=3 && x<24)
{
toplam2= 2+0.5*(x-3);
printf("%d      %f      %f\n",a,x,toplam2);

}
if (toplam>10)
{
toplam3=10;
printf("%d      %f      %f\n",a,x,toplam3);

}
t1=toplam1+toplam2+toplam3;
}

if (a==2){
if (y==0 || y<0)
printf("Lütfen geçerli bir değer giriniz\n");
if (y>0 && y<3)
{
toplam1=2;
printf("%d      %f      %f\n",a,y,toplam1);

}
if(y>=3 && y<24)
{
toplam2= 2+0.5*(y-3);
printf("%d      %f      %f\n",a,y,toplam2);

}
if (toplam>10)
{
toplam3=10;
printf("%d      %f      %f\n",a,y,toplam3);

}
t2=toplam1+toplam2+toplam3;
}
if (a==3){
if (z==0 || z<0)
printf("Lütfen geçerli bir değer giriniz\n");
if (z>0 && z<3)
{
toplam1=2;
printf("%d      %f      %f\n",a,z,toplam1);

}
if(z>=3 && z<24)
{
toplam2= 2+0.5*(z-3);
printf("%d      %f      %f\n",a,z,toplam2);

}
if (toplam>10)
{
toplam3=10;
printf("%d      %f      %f\n",a,z,toplam3);

}
t3=toplam1+toplam2+toplam3;
}
}
t4=t1+t2+t3;
printf("TOPLAM               %f",t4);
return 0;
}
kodetiketi kullanalım lütfen.
Arkadaşlar fonksiyon kullanmadan bu şekilde yaptım ben sorun yok. Yalnız bunu fonksiyon kullanarak hatta bir adım öteye geçip dizi yada pointer kullanarak nasıl yaparım şimdiden teşekkürler.

[eklenti yönetici tarafından silindi]

Erdem

Şu şekilde olabilir. Gene de ücret hesaplayan kısmı tekrar kontrol etmenizde fayda var.


#include <stdio.h>

typedef struct
{
    int parkSuresi;
}Musteri;


void parkSuresiniOgren(Musteri * musteri);
double ucretiHesapla(Musteri * musteri);
void bilgiGoster(Musteri * musteri);

int main(void)
{
    Musteri musteriler[3];
    Musteri * gecerliMusteri;

    gecerliMusteri = musteriler;

    // 3 müşteri için dizi kullandık gösterge her seferinde bir artarak
    // dizinin bir sonraki elemanına işaret ediyor.
    int i = 0;
    for (i; i < 3; ++i)
    {
        *(gecerliMusteri + i);
        parkSuresiniOgren(gecerliMusteri);
        bilgiGoster(gecerliMusteri);
    }

}
void bilgiGoster(Musteri * musteri)
{
    printf("Müşteri park süresi %d\n", musteri->parkSuresi);

    double ucret = ucretiHesapla(musteri);
    printf("Müşterinin ödeyeceği ücret %f lira.\n", ucret);

}

void parkSuresiniOgren(Musteri * musteri)
{
    printf("Lütfen park süresini giriniz.\n");
    scanf("%d", &(musteri->parkSuresi));

}

double ucretiHesapla(Musteri * musteri)
{
    if (musteri->parkSuresi < 3)
        return 2;
    if (musteri->parkSuresi > 3 && musteri->parkSuresi < 24)
    {
        musteri->parkSuresi -= 3;
        return 2 + (musteri->parkSuresi * 0.5);
    }
    if (musteri->parkSuresi == 24)
        return 10;
}

mesute

Kardeşim teşekkür ederim bundan sonrasını ben hallederim..