Program Layanan Masyarakat
Implementasi Perulangan, Array, dan Kondisi dalam Bahasa C
Source Code Program
MAIN.C#include <stdio.h>
#include <string.h>
#include <stdbool.h>
int main() {
int pilihan;
char kembali;
do {
printf("\n=== MENU LAYANAN UMUM ===\n");
printf("1. Rekap Konsumsi Air\n");
printf("2. Data Peserta Piket RT/RW\n");
printf("3. Cek Kelayakan Donor Darah\n");
printf("0. Keluar Program\n");
printf("Pilih menu (1-3): ");
scanf("%d", &pilihan);
switch (pilihan) {
case 1: {
// PERULANGAN
int minum, total = 0;
char ulang;
do {
printf("Masukkan jumlah air yang diminum (ml): ");
scanf("%d", &minum);
total = total + minum;
printf("Total konsumsi air sementara: %d ml\n", total);
printf("Apakah ingin menambah data minum? (y/n): ");
scanf(" %c", &ulang);
} while (ulang == 'y' || ulang == 'Y');
printf("\nTotal konsumsi air hari ini: %d ml\n", total);
printf("Tetap jaga hidrasi ya!\n");
break;
}
case 2: {
// ARRAY
struct {
char nama[50];
char noRumah[20];
bool sudahPiket;
} warga[50];
int jumlah, i, c;
char hari[][10] = {"Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu", "Minggu"};
while ((c = getchar()) != '\n' && c != EOF);
printf("\n=== DATA PESERTA PIKET RT/RW ===\n");
printf("Masukkan jumlah warga: ");
scanf("%d", &jumlah);
while ((c = getchar()) != '\n' && c != EOF);
for (i = 0; i < jumlah; i++) {
printf("\nWarga ke-%d\n", i + 1);
printf("Nama: ");
fgets(warga[i].nama, 50, stdin);
warga[i].nama[strcspn(warga[i].nama, "\n")] = 0;
printf("No Rumah: ");
fgets(warga[i].noRumah, 20, stdin);
warga[i].noRumah[strcspn(warga[i].noRumah, "\n")] = 0;
warga[i].sudahPiket = false;
}
printf("\n=== DAFTAR WARGA ===\n");
printf("%-5s %-25s %-10s\n", "No", "Nama", "No Rumah");
printf("----------------------------------------\n");
for (i = 0; i < jumlah; i++) {
printf("%-5d %-25s %-10s\n", i + 1, warga[i].nama, warga[i].noRumah);
}
printf("\n=== JADWAL PIKET MINGGU INI ===\n");
int batasHari = (jumlah < 7) ? jumlah : 7;
for (i = 0; i < batasHari; i++) {
printf("%-8s: %-25s (Rumah: %s)\n",
hari[i], warga[i].nama, warga[i].noRumah);
}
if (jumlah < 7) {
printf("\nCatatan: Hanya %d hari terisi dari 7 hari.\n", jumlah);
}
break;
}
case 3: {
// KONDISI
int umur, sistole, diastole, nadi;
float berat, hb, suhu;
int layak = 1;
printf("=== Program Skrining Donor Darah Detail ===\n\n");
printf("Masukkan umur: "); scanf("%d", &umur);
printf("Masukkan berat badan (kg): "); scanf("%f", &berat);
printf("Masukkan Tekanan Darah Sistole (100 – 160 mmHg): "); scanf("%d", &sistole);
printf("Masukkan Tekanan Darah Diastole (70 – 100 mmHg): "); scanf("%d", &diastole);
printf("Masukkan Kadar Hemoglobin Hb (12,5 – 17,0 g/dL): "); scanf("%f", &hb);
printf("Masukkan Suhu Tubuh Celsius (36,6 – 37,5 °C): "); scanf("%f", &suhu);
printf("Masukkan Denyut Nadi (50 – 100 kali/menit): "); scanf("%d", &nadi);
printf("\n--- Hasil Evaluasi ---\n");
if (umur < 17 || umur > 60) { printf("- Usia tidak masuk rentang 17-60 tahun.\n"); layak = 0; }
if (berat < 45) { printf("- Berat badan kurang dari 45 kg.\n"); layak = 0; }
if (sistole < 100 || sistole > 160) { printf("- Tekanan darah sistole tidak normal (100-160 mmHg).\n"); layak = 0; }
if (diastole < 70 || diastole > 100) { printf("- Tekanan darah diastole tidak normal (70-100 mmHg).\n"); layak = 0; }
if (hb < 12.5 || hb > 17.0) { printf("- Kadar Hemoglobin (Hb) tidak normal (12,5-17,0 g/dL).\n"); layak = 0; }
if (suhu < 36.6 || suhu > 37.5) { printf("- Suhu tubuh tidak normal (36,6-37,5 C).\n"); layak = 0; }
if (nadi < 50 || nadi > 100) { printf("- Denyut nadi tidak normal (50-100 kali/menit).\n"); layak = 0; }
printf("-----------------------\n");
if (layak) { printf("STATUS: LAYAK DONOR DARAH\n"); } else { printf("STATUS: TIDAK LAYAK DONOR DARAH\n"); }
break;
}
case 0:
printf("Keluar dari program...\n");
return 0;
default:
printf("Menu tidak tersedia\n");
}
printf("\nKembali ke menu utama? (y/n): ");
scanf(" %c", &kembali);
} while (kembali == 'y' || kembali == 'Y');
printf("Terima kasih telah menggunakan layanan kami!\n");
return 0;
}
* Geser ke kanan untuk melihat kode selengkapnya
Screenshot Output Program
Menu 1
Rekap Konsumsi Air
Menu 2
Data Piket RT/RW
Menu 2
Data Piket RT/RW
Menu 3
Skrining Donor Darah
Menu 3
Skrining Donor Darah
"Open image in new tab" untuk melihat gambar lebih jelas.
Anggota Kelompok 4
Kontribusi pembuatan fitur program
Sistem Informasi 2024
CASE 3
Faza Akhmad
10124477
CASE 1
Galih Anggara
10124507
CASE 2
Rafid Salman
11124123
Salman as a blog post designer
Komentar
Posting Komentar