踩1:EXC_BAD_ACCESS(代码= EXC_I386_GPFLT)

时间:2018-12-28 21:49:03

标签: c xcode

我的C代码遇到了一些麻烦。这是执行my代码后遇到的错误的详细信息。错误随着线而上升

Odeme_Plani[i].Taksit_Tutari = Odeme_Plani[i-1].Taksit_Tutari;

为什么会出现此错误以及如何处理此问题,请帮助我。谢谢你的帮助。最好的问候。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
typedef struct {
int MusteriNo;
char Ad[100];
char Soyad[100];
int Kredi_Tutari;
int Taksit_Sayisi;
float Aylik_Akdi_Faiz_Orani;
int KKDF;
int BSMV;
}Customer;

typedef struct{
int no;
int Taksit_Tarihi_gun;
int Taksit_Tarihi_ay;
int Taksit_Tarihi_yil;
float Taksit_Tutari;
float Taksit_İcerisindeki_Anapara;
float Faiz;
float Fon_Vergi;
float Kalan_Anapara;
}Customer1;

float taksit_tutari(int Kredi_Tutari, float faiz, int Taksit_sayisi, int KKDF, int BSMV);
float faiz_hesabi(int Kredi_Tutari, float faiz, double kalan_anapara);

int main() {

// First we must define global variables like faiz oranı, kredi tutarı vb.
Customer Musteri1;
int i = 0;
int current_time_gun = 27;
int current_time_ay = 12;
int current_time_yil = 2018;
printf("Lütfen Musteri Numarasini giriniz\n");
scanf("%d",&Musteri1.MusteriNo);

printf("Lütfen Musteri Adini giriniz\n");
scanf("%s",Musteri1.Ad);

printf("Lütfen Musteri Soyadini giriniz\n");
scanf("%s",Musteri1.Soyad);

printf("Lütfen Musterinin istediği Kredi Tutarini giriniz\n");
scanf("%d",&Musteri1.Kredi_Tutari);

printf("Lütfen Krediyi kaç ay vade ile almak istediginizi giriniz\n");
scanf("%d",&Musteri1.Taksit_Sayisi);

printf("Lütfen Kredinin Aylik Akdi Faiz Oranini giriniz\n");
scanf("%f.2",&Musteri1.Aylik_Akdi_Faiz_Orani);

printf("Lütfen KKDF Yuzdesini giriniz\n");
scanf("%d",&Musteri1.KKDF);

printf("Lütfen BSMV Yuzdesini giriniz\n");
scanf("%d",&Musteri1.BSMV);

Customer1 Odeme_Plani[Musteri1.Taksit_Sayisi];

for (i=0;(Musteri1.Taksit_Sayisi-1);i++){
    if(i==0){
    Odeme_Plani[i].Taksit_Tutari = taksit_tutari(Musteri1.Kredi_Tutari,Musteri1.Aylik_Akdi_Faiz_Orani,Musteri1.Taksit_Sayisi,Musteri1.KKDF,Musteri1.BSMV);
    }
    else{
        Odeme_Plani[i].Taksit_Tutari = Odeme_Plani[i-1].Taksit_Tutari;
    }
}

for (i=0;((Musteri1.Taksit_Sayisi)-1);i++){
    Odeme_Plani[i].no = i+1;
    Odeme_Plani[i].Taksit_Tarihi_gun = current_time_gun;
    Odeme_Plani[i].Taksit_Tarihi_ay = current_time_ay + i;
    Odeme_Plani[i].Taksit_Tarihi_yil = current_time_yil;
}

for(i=0;((Musteri1.Taksit_Sayisi)-1);i++){
    if(i==0){
        Odeme_Plani[i].Kalan_Anapara = Musteri1.Kredi_Tutari;
        Odeme_Plani[i].Faiz = faiz_hesabi(Musteri1.Kredi_Tutari,   Musteri1.Aylik_Akdi_Faiz_Orani, Odeme_Plani[i].Kalan_Anapara);
        Odeme_Plani[i].Fon_Vergi = Odeme_Plani[i].Faiz * 0.2;
        Odeme_Plani[i].Taksit_İcerisindeki_Anapara =   Odeme_Plani[i].Taksit_Tutari - Odeme_Plani[i].Faiz - Odeme_Plani[i].Fon_Vergi;
        Odeme_Plani[i].Kalan_Anapara = Musteri1.Kredi_Tutari - Odeme_Plani[i].Taksit_İcerisindeki_Anapara;
    }
    else
        Odeme_Plani[i].Faiz = faiz_hesabi(Musteri1.Kredi_Tutari, Musteri1.Aylik_Akdi_Faiz_Orani, Odeme_Plani[i-1].Kalan_Anapara);
        Odeme_Plani[i].Fon_Vergi = Odeme_Plani[i].Faiz * 0.2;
        Odeme_Plani[i].Taksit_İcerisindeki_Anapara = Odeme_Plani[i].Taksit_Tutari - Odeme_Plani[i].Faiz - Odeme_Plani[i].Fon_Vergi;
        Odeme_Plani[i].Kalan_Anapara = Odeme_Plani[i-1].Kalan_Anapara - Odeme_Plani[i].Taksit_İcerisindeki_Anapara;
}



for (i=0;((Musteri1.Taksit_Sayisi)-1);i++){
    printf("\nNo %d\n",Odeme_Plani[i].no);
    printf("Taksit Tarihi %d // %d // %d\n"  ,Odeme_Plani[i].Taksit_Tarihi_gun,Odeme_Plani[i].Taksit_Tarihi_ay,Odeme_Plani[i].Taksit_Tarihi_yil);
    printf("Taksit Tutari %f\n",Odeme_Plani[i].Taksit_Tutari);
    printf("Taksit icindeki ana para %.2f\n",Odeme_Plani[i].Taksit_İcerisindeki_Anapara);
    printf("Faiz %.2f\n",Odeme_Plani[i].Faiz);
    printf("Fon + Vergi %.2f\n",Odeme_Plani[i].Fon_Vergi);
    printf("Kalan Anapara %.2f\n\n",Odeme_Plani[i].Kalan_Anapara);
}
return 0;
}


float taksit_tutari(int Kredi_Tutari, float faiz, int Taksit_sayisi, int KKDF, int BSMV){
float taksit_miktari;
taksit_miktari = (Kredi_Tutari) * (((faiz/100) * pow((1+(faiz/100)),Taksit_sayisi)) / (pow((1+(faiz/100)),Taksit_sayisi)-1));
return taksit_miktari;

}

float faiz_hesabi(int Kredi_Tutari, float faiz, double kalan_anapara){
float faiz_miktari;
if(Kredi_Tutari == kalan_anapara)
faiz_miktari = (Kredi_Tutari * faiz)/100;
else
faiz_miktari = (kalan_anapara * faiz)/100;;
return faiz_miktari;

}

0 个答案:

没有答案