NIM : 22076049
Prodi : Pendidikan Teknik Informatika
TUGAS 9: Tentang STRUCT dan ARRAY of STRUCT
1. Buatlah suatu tipe bentukan berupa struct bernama PESERTA dan jadikan
sebagai tipe data baru menggunakan klausa typedef untuk struktur seperti
berikut: PESERTA
nama
nomorPeserta
Algoritma:
Deklarasi
Variabel
Nama, namaPeserta : char
Deskripsi
Start
typedef struct peserta
nama[30]
nomorPeserta[10]
peserta
peserta peserta01
strcpy(peserta01.nama, iqbal’)
strcpy(peserta01.nomorPeserta, ‘051’)
write(‘nomor peserta’, peserta01.nama, peserta01.nomorPeserta’)
End
Implementasi C:
//Program Menampilkan Nama Dan nomor peserta
#include <stdio.h>
#include <string.h>
int main()
{
biodataPeserta peserta01;
2. Sekarang Anda buat juga suatu tipe bentukan bernama WAKTU berupa struct
dan jadikan sebagai tipe data baru menggunakan klausa typedef untuk struktur
seperti berikut:
jam
WAKTU
menit
detik
Perlu diingat, bahwa struct WAKTU memiliki tiga buah field dan Anda harus
menentukan tipe data variabel dari masing-masing field tersebut.
Algoritma:
Deklarasi
Variabel
Jam, menit, detik :int Deskripsi
Start
typedef struct jam, menit, detik
WAKTU
write(‘Masukkan jam : ‘)
read(a)
write(‘Masukkan menit : ‘)
read(b)
write(’Masukkan detik : ‘)
read(c)
write (WAKTU)
write(‘JAM : ’, a)
write(‘Menit : ’, b)
write(‘Detik : ’, c)
End
Implementasi C:
//program penampl waktu
#include <stdio.h>
typedef unsigned int jam; typedef unsigned int menit; typedef unsigned int
detik;
int main()
{
jam a; menit b; detik c;
printf("\nWAKTU\n");
printf("Jam : %d \n",a);
printf("Menit: %d \n",b);
printf("Detik: %d \n",c);
return 0;
}
3. Gunakan ke dua tipe data baru di atas untuk suatu tipe bentukan baru berupa
struct yang di dalamnya ada struct dengan nama LOMBA. Strukturnya sebagai
berikut:
peserta: PESERTA
LOMBA
start: WAKTU
finish: WAKTU
catatanWaktu: WAKTU
Algoritma:
Deklarasi
Variabel
Nama, nomor, peserta, start, finish, waktu, catatanwaktu : char
Deskripsi
Start
struct Peserta
nama[30]
nomor[10]
Peserta
struct Lomba
Peserta[30]
start[10]
finish[10]
durasiLomba
struct WaktuLomba
struct waktu
catatanwaktu[10]
durasiWaktuLomba
Peserta
strcpy (Peserta.nama, ‘Muhammad iqbal’)
strcpy (Peserta.nomor,’0046’)
write(‘Nama Peserta : ‘,Peserta.nama)
write(‘Nomor Peserta : ‘,Peserta.nomor)
durasiLomba
strcpy(durasiLomba.start, ‘00:00:00’)
strcpy(durasiLomba.finish,’00:03:34’)
Implementasi C:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
struct Peserta{
char nama[30];
char nomor[10];
}Peserta;
struct Lomba{
char Peserta[30]; char start[10]; char finish[10];
}durasiLomba;
struct WaktuLomba{
struct waktu;
char catatanwaktu[10];
}durasiWaktuLomba;
int main()
printf("Programmer : Muhammad Iqbal\n");
printf("NIM : 22076048\n");
printf("Prodi : Pendidikan Teknik Informatika\n");
{ Peserta;
strcpy (Peserta.nama, "Bujang");
strcpy (Peserta.nomor,"946");
{durasiWaktuLomba;
strcpy(durasiWaktuLomba.catatanwaktu,"00:16:45");
printf("Catatan waktu: %s",durasiWaktuLomba.catatanwaktu);
}
}
}
4. Buatlah sebuah program yang menerapkan ketiga tipe data baru di atas yang
dapat mengelola hasil pertandingan LOMBA MARATHON, dengan ketentuan
sebagai berikut:
Program digunakan untuk mengelola N orang peserta (misalnya N
ditetapkan sebagai 10)
Data dientrikan dan disimpan dalam suatu array of struct dari tipe
LOMBA
Field catatanWaktu adalah selisih waktu yang dihitung berdasarkan
waktu start dan waktu finish
Program dapat menampilkan informasi lengkap hasil pertandingan.
Algoritma:
Deklarasi
Variabel
Nama, nomor: char
Jam, menit, detik, I, j :int
jumlahStart: Int
JumlahFinish:int
Deskripsi
Start
typedef struct
Peserta Nama[100]
NomorPeserta[3]
PESERTA
LOMBA PesertaLomba[N]
JumlahStart = (3600*PesertaLomba[i].Start.Jam) +
(60*PesertaLomba[i].Start.Menit) + PesertaLomba[i].Start.Detik
JumlahFinish = (3600*PesertaLomba[i].Finish.Jam) +
(60*PesertaLomba[i].Finish.Menit) + PesertaLomba[i].Finish.Detik
JumlahFinish -= JumlahStart
PesertaLomba[i].CatatanWaktu.Jam = JumlahFinish/3600
PesertaLomba[i].CatatanWaktu.Menit = JumlahFinish%3600/60
PesertaLomba[i].CatatanWaktu.Detik = JumlahFinish%3600%60
write(‘ = Hasil Perlombaan = ‘)
for(j=0; j<N; j++)
write(‘PESERTA KE-‘, j+1)
write(‘Nama Peserta : ‘, PesertaLomba[j].Peserta.Nama)
write(‘Nomor Peserta : ‘,
PesertaLomba[j].Peserta.NomorPeserta) write(‘Waktu Start : ‘,
PesertaLomba[j].Start.Jam,PesertaLomba[j].Start.Menit,
PesertaLomba[j].Start.Detik)
write(‘Waktu Finish : ‘, PesertaLomba[j].Finish.Jam,
PesertaLomba[j].Finish.Menit, PesertaLomba[j].Finish.Detik)
write(‘Catatan Waktu : Peserta Mencapai Finish Dalam … Jam
…. Menit …. Detik’, PesertaLomba[j].CatatanWaktu.Jam,
End
Implementasi C:
//program penampil catatan lomba
#include <stdio.h>
#include <string.h>
main()
{
printf("Programmer : Muhammad Iqbal\n");
printf("NIM : 22076048\n");
printf("Prodi : Pendidikan Teknik Informatika\n");
JumlahFinish -= JumlahStart;
PesertaLomba[i].CatatanWaktu.Jam = JumlahFinish/3600;
PesertaLomba[i].CatatanWaktu.Menit = JumlahFinish%3600/60;
PesertaLomba[i].CatatanWaktu.Detik = JumlahFinish%3600%60;
printf("\n ------------------------------\n");
}
printf("\n === Hasil Perlombaan === \n");
int j;
for(j=0; j<N; j++)
{
printf("\n PESERTA KE-%d", j+1);
printf("\n Nama Peserta : %s ", PesertaLomba[j].Peserta.Nama); printf("\n
Nomor Peserta : %s ", PesertaLomba[j].Peserta.NomorPeserta);
printf("\n Waktu Start : %d:%d:%d", PesertaLomba[j].Start.Jam,
PesertaLomba[j].Start.Menit, PesertaLomba[j].Start.Detik);
printf("\n Waktu Finish : %d:%d:%d", PesertaLomba[j].Finish.Jam,
PesertaLomba[j].Finish.Menit, PesertaLomba[j].Finish.Detik);
printf("\n Catatan Waktu : Peserta Mencapai Finish Dalam %d Jam %d Menit
%d Detik", PesertaLomba[j].CatatanWaktu.Jam,
PesertaLomba[j].CatatanWaktu.Menit, PesertaLomba[j].CatatanWaktu.Detik);
printf("\n ------------------------------------");
printf("\n");
}
printf("\n");
return 0;
}