/* oleh: Ahmad Ridwan T. Nugraha */
#include <stdio.h>
main()
{
    int i, j, N = 25;
    float x;
    FILE *o;
    printf("1. Logistic Map\n2. Tent Map\n3. Binary Transformation\n");
    printf("Apa pilihannya? "); scanf("%d", &j);
    switch (j) {
        case 1: /* pemetaan logistik */
        if((o = fopen("chaos1.csv", "w")) == NULL) printf("error\n");
        printf("Masukkan nilai awal deret: "); scanf("%f", &x);
        printf("Jumlah pengulangan (N) = 25");
        printf("x[0]\t= %f\n", x);
        fprintf(o, "0,%.4f\n", x);
        for(i = 1; i <= N; i++) {
            x = 4 * x * (1 - x);
            printf("x[%d]\t= %f\n", i, x);
            fprintf(o, "%d,%.4f\n", i, x);
        } break;
        case 2: /* pemetaan tenda */
        if((o = fopen("chaos2.csv", "w")) == NULL) printf("error\n");
        printf("Masukkan nilai awal deret: "); scanf("%f", &x);
        printf("Jumlah pengulangan (N) = 25");
        printf("x[0]\t= %f\n", x);
        fprintf(o, "0,%.4f\n", x);
        for(i = 1; i <= N; i++) {
            if((x >= 0) && (x <= 0.5)) x = 2 * x;
            else if ((x > 0.5) && (x <= 1)) x = 2 - 2 * x;
            printf("x[%d]\t= %f\n", i, x);
            fprintf(o, "%d,%.4f\n", i, x);
        } break;
        case 3: /* transformasi biner */
        if((o = fopen("chaos3.csv", "w")) == NULL) printf("error\n");
        printf("Masukkan nilai awal deret: "); scanf("%f", &x);
        printf("Jumlah pengulangan (N) = 25");
        printf("x[0]\t= %f\n", x);
        fprintf(o, "0,%.4f\n", x);
        for(i = 1; i <= N; i++) {
            if((x >= 0) && (x <= 0.5)) x = 2 * x;
            else if ((x > 0.5) && (x <= 1)) x = 2 * x - 1;
            printf("x[%d]\t= %f\n", i, x);
            fprintf(o, "%d,%.4f\n", i, x);
        } break;
        default: printf ("Salah Pilih!"); break;
    }
    fclose(o);
}

