#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Pegawai
{
char Nama[21];
char id[6];
char Jabatan[21];
int Performa_Kerja;
double Nilai_Dasprog;
};
struct Validation
{
int id;
int index;
};
struct Pegawai database[100];
struct Validation id[100000] =
{0};
int counter = 0;
void shiftAndRemove(int index)
{
for (int i = index; i < counter; i++)
{
database[i] = database[i + 1];
id
[atoi(database
[i
].
id)].
index = i
; }
counter--;
}
void addPegawai()
{
char Nama[20], Jabatan[20], new_id[6];
int Performa_Kerja;
double Nilai_Dasprog;
scanf("%s %s %s %d %lf", Nama
, new_id
, Jabatan
, &Performa_Kerja
, &Nilai_Dasprog
);
{
printf("ERROR CANNOT CREATE.\n"); } else
{
strcpy(database
[counter
].
Nama, Nama
); strcpy(database
[counter
].
id, new_id
); strcpy(database
[counter
].
Jabatan, Jabatan
); database[counter].Performa_Kerja = Performa_Kerja;
database[counter].Nilai_Dasprog = Nilai_Dasprog;
id
[atoi(new_id
)].
index = counter
; counter++;
}
}
void displayPegawai()
{
char read[100];
if (strcmp(read
, "ALL") == 0 && counter
> 0) {
for (int j = 0; j < counter; j++)
{
struct Pegawai *curr = database + j;
printf("%s %s %s %d %.2f\n", curr
->Nama
, curr
->id
, curr
->Jabatan
, curr
->Performa_Kerja
, curr
->Nilai_Dasprog
); }
} else
{
{
struct Pegawai
*curr
= database
+ id
[atoi(read
)].
index; printf("%s %s %s %d %.2f\n", curr
->Nama
, curr
->id
, curr
->Jabatan
, curr
->Performa_Kerja
, curr
->Nilai_Dasprog
); } else
{
}
}
}
void modifyPegawai(int update_id)
{
if (id[update_id].id)
{
struct Pegawai *curr = database + id[update_id].index;
scanf("%s %s %d %lf", curr
->Nama
, curr
->Jabatan
, &curr
->Performa_Kerja
, &curr
->Nilai_Dasprog
); } else
{
char tempNama[21], tempPos[21];
int TempPerforma_Kerja;
double Temp_Nilai_Dasprog;
scanf("%s %s %d %lf", tempNama
, tempPos
, &TempPerforma_Kerja
, &Temp_Nilai_Dasprog
); printf("ERROR CANNOT UPDATE.\n"); }
}
void eliminatePegawai()
{
char delete[100];
if (strcmp(delete
, "ALL") == 0 && counter
> 0) {
for (int i = 0; i < counter; i++)
{
id
[atoi(database
[i
].
id)].
id = 0; }
counter = 0;
} else if (id
[atoi(delete
)].
id) {
shiftAndRemove
(id
[atoi(delete
)].
index); } else
{
printf("ERROR CANNOT DELETE.\n"); }
}
int main()
{
int n;
for (int i = 0; i < n; i++)
{
struct Pegawai *curr = database + i;
scanf("%s %s %s %d %lf", curr
->Nama
, curr
->id
, curr
->Jabatan
, &curr
->Performa_Kerja
, &curr
->Nilai_Dasprog
); id
[atoi(curr
->id
)].
id = 1; id
[atoi(curr
->id
)].
index = counter
; counter++;
}
int m;
for (int i = 0; i < m; i++)
{
char command[100];
if (strcmp(command
, "CREATE") == 0) {
addPegawai();
} else if (strcmp(command
, "READ") == 0) {
displayPegawai();
} else if (strcmp(command
, "UPDATE") == 0) {
int update_id;
char throw[3];
scanf("%d %s", &update_id
, throw
); modifyPegawai(update_id);
} else if (strcmp(command
, "DELETE") == 0) {
eliminatePegawai();
} else
{
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgoKCnN0cnVjdCBQZWdhd2FpIAp7CiAgICBjaGFyIE5hbWFbMjFdOwogICAgY2hhciBpZFs2XTsKICAgIGNoYXIgSmFiYXRhblsyMV07CiAgICBpbnQgUGVyZm9ybWFfS2VyamE7CiAgICBkb3VibGUgTmlsYWlfRGFzcHJvZzsKfTsKCnN0cnVjdCBWYWxpZGF0aW9uIAp7CiAgICBpbnQgaWQ7CiAgICBpbnQgaW5kZXg7Cn07CgpzdHJ1Y3QgUGVnYXdhaSBkYXRhYmFzZVsxMDBdOwpzdHJ1Y3QgVmFsaWRhdGlvbiBpZFsxMDAwMDBdID0gCnswfTsKCmludCBjb3VudGVyID0gMDsKCnZvaWQgc2hpZnRBbmRSZW1vdmUoaW50IGluZGV4KSAKewogICAgZm9yIChpbnQgaSA9IGluZGV4OyBpIDwgY291bnRlcjsgaSsrKSAKICAgIHsKICAgICAgICBkYXRhYmFzZVtpXSA9IGRhdGFiYXNlW2kgKyAxXTsKICAgICAgICBpZFthdG9pKGRhdGFiYXNlW2ldLmlkKV0uaW5kZXggPSBpOwogICAgfQogICAgY291bnRlci0tOwp9Cgp2b2lkIGFkZFBlZ2F3YWkoKSAKewogICAgY2hhciBOYW1hWzIwXSwgSmFiYXRhblsyMF0sIG5ld19pZFs2XTsKICAgIGludCBQZXJmb3JtYV9LZXJqYTsKICAgIGRvdWJsZSBOaWxhaV9EYXNwcm9nOwoKICAgIHNjYW5mKCIlcyAlcyAlcyAlZCAlbGYiLCBOYW1hLCBuZXdfaWQsIEphYmF0YW4sICZQZXJmb3JtYV9LZXJqYSwgJk5pbGFpX0Rhc3Byb2cpOwoKICAgIGlmIChpZFthdG9pKG5ld19pZCldLmlkKSAKICAgIHsKICAgICAgICBwcmludGYoIkVSUk9SIENBTk5PVCBDUkVBVEUuXG4iKTsKICAgIH0gZWxzZSAKICAgIHsKICAgICAgICBwcmludGYoIkRBVEEgQ1JFQVRFRC5cbiIpOwogICAgICAgIHN0cmNweShkYXRhYmFzZVtjb3VudGVyXS5OYW1hLCBOYW1hKTsKICAgICAgICBzdHJjcHkoZGF0YWJhc2VbY291bnRlcl0uaWQsIG5ld19pZCk7CiAgICAgICAgc3RyY3B5KGRhdGFiYXNlW2NvdW50ZXJdLkphYmF0YW4sIEphYmF0YW4pOwogICAgICAgIGRhdGFiYXNlW2NvdW50ZXJdLlBlcmZvcm1hX0tlcmphID0gUGVyZm9ybWFfS2VyamE7CiAgICAgICAgZGF0YWJhc2VbY291bnRlcl0uTmlsYWlfRGFzcHJvZyA9IE5pbGFpX0Rhc3Byb2c7CiAgICAgICAgaWRbYXRvaShuZXdfaWQpXS5pZCA9IDE7CiAgICAgICAgaWRbYXRvaShuZXdfaWQpXS5pbmRleCA9IGNvdW50ZXI7CiAgICAgICAgY291bnRlcisrOwogICAgfQp9Cgp2b2lkIGRpc3BsYXlQZWdhd2FpKCkgCnsKICAgIGNoYXIgcmVhZFsxMDBdOwogICAgc2NhbmYoIiVzIiwgcmVhZCk7CgogICAgaWYgKHN0cmNtcChyZWFkLCAiQUxMIikgPT0gMCAmJiBjb3VudGVyID4gMCkgCiAgICB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb3VudGVyOyBqKyspIAogICAgICAgIHsKICAgICAgICAgICAgc3RydWN0IFBlZ2F3YWkgKmN1cnIgPSBkYXRhYmFzZSArIGo7CiAgICAgICAgICAgIHByaW50ZigiJXMgJXMgJXMgJWQgJS4yZlxuIiwgY3Vyci0+TmFtYSwgY3Vyci0+aWQsIGN1cnItPkphYmF0YW4sIGN1cnItPlBlcmZvcm1hX0tlcmphLCBjdXJyLT5OaWxhaV9EYXNwcm9nKTsKICAgICAgICB9CiAgICB9IGVsc2UgCiAgICB7CiAgICAgICAgaWYgKGlkW2F0b2kocmVhZCldLmlkKSAKICAgICAgICB7CiAgICAgICAgICAgIHN0cnVjdCBQZWdhd2FpICpjdXJyID0gZGF0YWJhc2UgKyBpZFthdG9pKHJlYWQpXS5pbmRleDsKICAgICAgICAgICAgcHJpbnRmKCIlcyAlcyAlcyAlZCAlLjJmXG4iLCBjdXJyLT5OYW1hLCBjdXJyLT5pZCwgY3Vyci0+SmFiYXRhbiwgY3Vyci0+UGVyZm9ybWFfS2VyamEsIGN1cnItPk5pbGFpX0Rhc3Byb2cpOwogICAgICAgIH0gZWxzZSAKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiREFUQSBOT1QgRk9VTkQuXG4iKTsKICAgICAgICB9CiAgICB9Cn0KCnZvaWQgbW9kaWZ5UGVnYXdhaShpbnQgdXBkYXRlX2lkKSAKewogICAgaWYgKGlkW3VwZGF0ZV9pZF0uaWQpIAogICAgewogICAgICAgIHN0cnVjdCBQZWdhd2FpICpjdXJyID0gZGF0YWJhc2UgKyBpZFt1cGRhdGVfaWRdLmluZGV4OwogICAgICAgIHNjYW5mKCIlcyAlcyAlZCAlbGYiLCBjdXJyLT5OYW1hLCBjdXJyLT5KYWJhdGFuLCAmY3Vyci0+UGVyZm9ybWFfS2VyamEsICZjdXJyLT5OaWxhaV9EYXNwcm9nKTsKICAgICAgICBwcmludGYoIkRBVEEgVVBEQVRFRC5cbiIpOwogICAgfSBlbHNlIAogICAgewogICAgICAgIGNoYXIgdGVtcE5hbWFbMjFdLCB0ZW1wUG9zWzIxXTsKICAgICAgICBpbnQgVGVtcFBlcmZvcm1hX0tlcmphOwogICAgICAgIGRvdWJsZSBUZW1wX05pbGFpX0Rhc3Byb2c7CiAgICAgICAgc2NhbmYoIiVzICVzICVkICVsZiIsIHRlbXBOYW1hLCB0ZW1wUG9zLCAmVGVtcFBlcmZvcm1hX0tlcmphLCAmVGVtcF9OaWxhaV9EYXNwcm9nKTsKICAgICAgICBwcmludGYoIkVSUk9SIENBTk5PVCBVUERBVEUuXG4iKTsKICAgIH0KfQoKdm9pZCBlbGltaW5hdGVQZWdhd2FpKCkgCnsKICAgIGNoYXIgZGVsZXRlWzEwMF07CiAgICBzY2FuZigiJXMiLCBkZWxldGUpOwoKICAgIGlmIChzdHJjbXAoZGVsZXRlLCAiQUxMIikgPT0gMCAmJiBjb3VudGVyID4gMCkgCiAgICB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudGVyOyBpKyspIAogICAgICAgIHsKICAgICAgICAgICAgaWRbYXRvaShkYXRhYmFzZVtpXS5pZCldLmlkID0gMDsKICAgICAgICB9CiAgICAgICAgY291bnRlciA9IDA7CiAgICAgICAgcHJpbnRmKCJEQVRBIERFTEVURUQuXG4iKTsKICAgIH0gZWxzZSBpZiAoaWRbYXRvaShkZWxldGUpXS5pZCkgCiAgICB7CiAgICAgICAgc2hpZnRBbmRSZW1vdmUoaWRbYXRvaShkZWxldGUpXS5pbmRleCk7CiAgICAgICAgaWRbYXRvaShkZWxldGUpXS5pZCA9IDA7CiAgICAgICAgcHJpbnRmKCJEQVRBIERFTEVURUQuXG4iKTsKICAgIH0gZWxzZSAKICAgIHsKICAgICAgICBwcmludGYoIkVSUk9SIENBTk5PVCBERUxFVEUuXG4iKTsKICAgIH0KfQoKaW50IG1haW4oKSAKewogICAgaW50IG47CiAgICBzY2FuZigiJWQiLCAmbik7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIAogICAgewogICAgICAgIHN0cnVjdCBQZWdhd2FpICpjdXJyID0gZGF0YWJhc2UgKyBpOwogICAgICAgIHNjYW5mKCIlcyAlcyAlcyAlZCAlbGYiLCBjdXJyLT5OYW1hLCBjdXJyLT5pZCwgY3Vyci0+SmFiYXRhbiwgJmN1cnItPlBlcmZvcm1hX0tlcmphLCAmY3Vyci0+TmlsYWlfRGFzcHJvZyk7CiAgICAgICAgaWRbYXRvaShjdXJyLT5pZCldLmlkID0gMTsKICAgICAgICBpZFthdG9pKGN1cnItPmlkKV0uaW5kZXggPSBjb3VudGVyOwogICAgICAgIGNvdW50ZXIrKzsKICAgIH0KCiAgICBpbnQgbTsKICAgIHNjYW5mKCIlZCIsICZtKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgCiAgICB7CiAgICAgICAgY2hhciBjb21tYW5kWzEwMF07CiAgICAgICAgc2NhbmYoIiVzIiwgY29tbWFuZCk7CgogICAgICAgIGlmIChzdHJjbXAoY29tbWFuZCwgIkNSRUFURSIpID09IDApIAogICAgICAgIHsKICAgICAgICAgICAgYWRkUGVnYXdhaSgpOwogICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGNvbW1hbmQsICJSRUFEIikgPT0gMCkgCiAgICAgICAgewogICAgICAgICAgICBkaXNwbGF5UGVnYXdhaSgpOwogICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGNvbW1hbmQsICJVUERBVEUiKSA9PSAwKSAKICAgICAgICB7CiAgICAgICAgICAgIGludCB1cGRhdGVfaWQ7CiAgICAgICAgICAgIGNoYXIgdGhyb3dbM107CiAgICAgICAgICAgIHNjYW5mKCIlZCAlcyIsICZ1cGRhdGVfaWQsIHRocm93KTsKICAgICAgICAgICAgbW9kaWZ5UGVnYXdhaSh1cGRhdGVfaWQpOwogICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGNvbW1hbmQsICJERUxFVEUiKSA9PSAwKSAKICAgICAgICB7CiAgICAgICAgICAgIGVsaW1pbmF0ZVBlZ2F3YWkoKTsKICAgICAgICB9IGVsc2UgCiAgICAgICAgewogICAgICAgICAgICBwcmludGYoIklOVkFMSUQgQ09NTUFORC5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQo=