#include <stdio.h>
#include <string.h>
// Struktur untuk menyimpan data teman
typedef struct {
char nama[50];
int target;
int pencapaian;
float prediksi;
} Teman;
// Fungsi untuk menghitung prediksi
float hitungPrediksi(int pencapaian, int target, int sisaWaktu, int waktuLalu) {
// Asumsi: Linear growth
float laju = (float)pencapaian / waktuLalu;
float prediksi = pencapaian + laju * sisaWaktu;
// Batasi prediksi agar tidak melebihi target
if (prediksi > target) {
prediksi = target;
}
return prediksi;
}
int main() {
// Data teman-teman
Teman teman[] = {
{"Boro", 100, 60, 0.0},
{"Toni", 120, 70, 0.0},
{"Siti", 150, 90, 0.0}
};
int jumlahTeman = sizeof(teman) / sizeof(teman[0]);
// Waktu yang sudah berjalan dan sisa waktu
int waktuLalu = 3; // Misalnya, 3 bulan
int sisaWaktu = 2; // Misalnya, 2 bulan lagi
// Hitung dan tampilkan prediksi
printf("Prediksi Pencapaian Target:\n"); for (int i = 0; i < jumlahTeman; i++) {
teman[i].prediksi = hitungPrediksi(teman[i].pencapaian, teman[i].target, sisaWaktu, waktuLalu);
printf("%s: Target = %d, Pencapaian = %d, Prediksi = %.2f\n", teman[i].nama, teman[i].target, teman[i].pencapaian, teman[i].prediksi);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCi8vIFN0cnVrdHVyIHVudHVrIG1lbnlpbXBhbiBkYXRhIHRlbWFuCnR5cGVkZWYgc3RydWN0IHsKICAgIGNoYXIgbmFtYVs1MF07CiAgICBpbnQgdGFyZ2V0OwogICAgaW50IHBlbmNhcGFpYW47CiAgICBmbG9hdCBwcmVkaWtzaTsKfSBUZW1hbjsKCi8vIEZ1bmdzaSB1bnR1ayBtZW5naGl0dW5nIHByZWRpa3NpCmZsb2F0IGhpdHVuZ1ByZWRpa3NpKGludCBwZW5jYXBhaWFuLCBpbnQgdGFyZ2V0LCBpbnQgc2lzYVdha3R1LCBpbnQgd2FrdHVMYWx1KSB7CiAgICAvLyBBc3Vtc2k6IExpbmVhciBncm93dGgKICAgIGZsb2F0IGxhanUgPSAoZmxvYXQpcGVuY2FwYWlhbiAvIHdha3R1TGFsdTsKICAgIGZsb2F0IHByZWRpa3NpID0gcGVuY2FwYWlhbiArIGxhanUgKiBzaXNhV2FrdHU7CgogICAgLy8gQmF0YXNpIHByZWRpa3NpIGFnYXIgdGlkYWsgbWVsZWJpaGkgdGFyZ2V0CiAgICBpZiAocHJlZGlrc2kgPiB0YXJnZXQpIHsKICAgICAgICBwcmVkaWtzaSA9IHRhcmdldDsKICAgIH0KCiAgICByZXR1cm4gcHJlZGlrc2k7Cn0KCmludCBtYWluKCkgewogICAgLy8gRGF0YSB0ZW1hbi10ZW1hbgogICAgVGVtYW4gdGVtYW5bXSA9IHsKICAgICAgICB7IkJvcm8iLCAxMDAsIDYwLCAwLjB9LAogICAgICAgIHsiVG9uaSIsIDEyMCwgNzAsIDAuMH0sCiAgICAgICAgeyJTaXRpIiwgMTUwLCA5MCwgMC4wfQogICAgfTsKICAgIGludCBqdW1sYWhUZW1hbiA9IHNpemVvZih0ZW1hbikgLyBzaXplb2YodGVtYW5bMF0pOwoKICAgIC8vIFdha3R1IHlhbmcgc3VkYWggYmVyamFsYW4gZGFuIHNpc2Egd2FrdHUKICAgIGludCB3YWt0dUxhbHUgPSAzOyAvLyBNaXNhbG55YSwgMyBidWxhbgogICAgaW50IHNpc2FXYWt0dSA9IDI7IC8vIE1pc2FsbnlhLCAyIGJ1bGFuIGxhZ2kKCiAgICAvLyBIaXR1bmcgZGFuIHRhbXBpbGthbiBwcmVkaWtzaQogICAgcHJpbnRmKCJQcmVkaWtzaSBQZW5jYXBhaWFuIFRhcmdldDpcbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBqdW1sYWhUZW1hbjsgaSsrKSB7CiAgICAgICAgdGVtYW5baV0ucHJlZGlrc2kgPSBoaXR1bmdQcmVkaWtzaSh0ZW1hbltpXS5wZW5jYXBhaWFuLCB0ZW1hbltpXS50YXJnZXQsIHNpc2FXYWt0dSwgd2FrdHVMYWx1KTsKICAgICAgICBwcmludGYoIiVzOiBUYXJnZXQgPSAlZCwgUGVuY2FwYWlhbiA9ICVkLCBQcmVkaWtzaSA9ICUuMmZcbiIsCiAgICAgICAgICAgICAgIHRlbWFuW2ldLm5hbWEsIHRlbWFuW2ldLnRhcmdldCwgdGVtYW5baV0ucGVuY2FwYWlhbiwgdGVtYW5baV0ucHJlZGlrc2kpOwogICAgfQoKICAgIHJldHVybiAwOwp9