#include <stdio.h>
#include <string.h>
 
// Fungsi untuk menentukan fenotipe
char* fenotipe(char geno[3]) {
    if (geno[0] == 'A' || geno[1] == 'A') {
        return "Dominan";
    } else {
        return "Resesif";
    }
}
 
int main() {
    char induk1[3], induk2[3];
    char f1[4][3]; // Menyimpan kombinasi F1 maksimal 4
    int i, j;
 
    printf("Masukkan genotipe induk 1 (contoh: Aa): ");
    scanf("%2s", induk1);
    printf("Masukkan genotipe induk 2 (contoh: Aa): ");
    scanf("%2s", induk2);
 
    // Membuat kombinasi F1 (4 kemungkinan)
    int index = 0;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < 2; j++) {
            f1[index][0] = induk1[i];
            f1[index][1] = induk2[j];
            f1[index][2] = '\0';
            // Urutkan huruf agar AA, Aa, aa konsisten
            if (f1[index][0] > f1[index][1]) {
                char temp = f1[index][0];
                f1[index][0] = f1[index][1];
                f1[index][1] = temp;
            }
            index++;
        }
    }
 
    // Hitung frekuensi genotipe
    int countAA=0, countAa=0, countaa=0;
    for (i = 0; i < 4; i++) {
        if (strcmp(f1[i], "AA") == 0) countAA++;
        else if (strcmp(f1[i], "Aa") == 0) countAa++;
        else if (strcmp(f1[i], "aA") == 0) countAa++; // jika Aa tertukar
        else if (strcmp(f1[i], "aa") == 0) countaa++;
    }
 
    printf("\nPersentase Genotipe F1:\n");
    printf("AA: %.2f%%\n", countAA * 25.0);
    printf("Aa: %.2f%%\n", countAa * 25.0);
    printf("aa: %.2f%%\n", countaa * 25.0);
 
    // Hitung fenotipe
    int countDominan = countAA + countAa;
    int countResesif = countaa;
 
    printf("\nPersentase Fenotipe F1:\n");
    printf("Dominan: %.2f%%\n", countDominan * 25.0);
    printf("Resesif: %.2f%%\n", countResesif * 25.0);
 
    return 0;
}
 
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8vIEZ1bmdzaSB1bnR1ayBtZW5lbnR1a2FuIGZlbm90aXBlCmNoYXIqIGZlbm90aXBlKGNoYXIgZ2Vub1szXSkgewogICAgaWYgKGdlbm9bMF0gPT0gJ0EnIHx8IGdlbm9bMV0gPT0gJ0EnKSB7CiAgICAgICAgcmV0dXJuICJEb21pbmFuIjsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuICJSZXNlc2lmIjsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBjaGFyIGluZHVrMVszXSwgaW5kdWsyWzNdOwogICAgY2hhciBmMVs0XVszXTsgLy8gTWVueWltcGFuIGtvbWJpbmFzaSBGMSBtYWtzaW1hbCA0CiAgICBpbnQgaSwgajsKCiAgICBwcmludGYoIk1hc3Vra2FuIGdlbm90aXBlIGluZHVrIDEgKGNvbnRvaDogQWEpOiAiKTsKICAgIHNjYW5mKCIlMnMiLCBpbmR1azEpOwogICAgcHJpbnRmKCJNYXN1a2thbiBnZW5vdGlwZSBpbmR1ayAyIChjb250b2g6IEFhKTogIik7CiAgICBzY2FuZigiJTJzIiwgaW5kdWsyKTsKCiAgICAvLyBNZW1idWF0IGtvbWJpbmFzaSBGMSAoNCBrZW11bmdraW5hbikKICAgIGludCBpbmRleCA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykgewogICAgICAgICAgICBmMVtpbmRleF1bMF0gPSBpbmR1azFbaV07CiAgICAgICAgICAgIGYxW2luZGV4XVsxXSA9IGluZHVrMltqXTsKICAgICAgICAgICAgZjFbaW5kZXhdWzJdID0gJ1wwJzsKICAgICAgICAgICAgLy8gVXJ1dGthbiBodXJ1ZiBhZ2FyIEFBLCBBYSwgYWEga29uc2lzdGVuCiAgICAgICAgICAgIGlmIChmMVtpbmRleF1bMF0gPiBmMVtpbmRleF1bMV0pIHsKICAgICAgICAgICAgICAgIGNoYXIgdGVtcCA9IGYxW2luZGV4XVswXTsKICAgICAgICAgICAgICAgIGYxW2luZGV4XVswXSA9IGYxW2luZGV4XVsxXTsKICAgICAgICAgICAgICAgIGYxW2luZGV4XVsxXSA9IHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICB9CiAgICB9CgogICAgLy8gSGl0dW5nIGZyZWt1ZW5zaSBnZW5vdGlwZQogICAgaW50IGNvdW50QUE9MCwgY291bnRBYT0wLCBjb3VudGFhPTA7CiAgICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChmMVtpXSwgIkFBIikgPT0gMCkgY291bnRBQSsrOwogICAgICAgIGVsc2UgaWYgKHN0cmNtcChmMVtpXSwgIkFhIikgPT0gMCkgY291bnRBYSsrOwogICAgICAgIGVsc2UgaWYgKHN0cmNtcChmMVtpXSwgImFBIikgPT0gMCkgY291bnRBYSsrOyAvLyBqaWthIEFhIHRlcnR1a2FyCiAgICAgICAgZWxzZSBpZiAoc3RyY21wKGYxW2ldLCAiYWEiKSA9PSAwKSBjb3VudGFhKys7CiAgICB9CgogICAgcHJpbnRmKCJcblBlcnNlbnRhc2UgR2Vub3RpcGUgRjE6XG4iKTsKICAgIHByaW50ZigiQUE6ICUuMmYlJVxuIiwgY291bnRBQSAqIDI1LjApOwogICAgcHJpbnRmKCJBYTogJS4yZiUlXG4iLCBjb3VudEFhICogMjUuMCk7CiAgICBwcmludGYoImFhOiAlLjJmJSVcbiIsIGNvdW50YWEgKiAyNS4wKTsKCiAgICAvLyBIaXR1bmcgZmVub3RpcGUKICAgIGludCBjb3VudERvbWluYW4gPSBjb3VudEFBICsgY291bnRBYTsKICAgIGludCBjb3VudFJlc2VzaWYgPSBjb3VudGFhOwoKICAgIHByaW50ZigiXG5QZXJzZW50YXNlIEZlbm90aXBlIEYxOlxuIik7CiAgICBwcmludGYoIkRvbWluYW46ICUuMmYlJVxuIiwgY291bnREb21pbmFuICogMjUuMCk7CiAgICBwcmludGYoIlJlc2VzaWY6ICUuMmYlJVxuIiwgY291bnRSZXNlc2lmICogMjUuMCk7CgogICAgcmV0dXJuIDA7Cn0K