LISTING PROGRAM
BAB V LISTING PROGRAM
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h>
#define pi 3.14159265 #define rad 180/pi
// Fungsi menu utama() void menu_utama(), teodas(), perhitungan(), aplikasi(), tentang(), keluar(), komen(), history(); // Fungsi menu teodas() void pengertian(), macam(), sifat1(), sifat2(), sifat3(), sifat4(), superposisi(); // Fungsi menu perhitungan() void besaran(), berdiri(); // fungsi aplikasi() void celah(), interf(), interf1(), interf2(); // Fungsi lain void garis();
// Variabel global char nama[30], pil; int c, i, j;
main(){ garis(); garis(); char gerak[]= " * * * * * *\n
* * * * * *\n* * * * * * * *GELOMBANG* * * * * * * *\n * * * * * *\n * * * * * *\n";
char selamat[]="\t\t\t>>|| SELAMAT DATANG ||<<\n\n\n"; char coba[]="\n\n\n\t\t\t>>|| SELAMAT MENCOBA ||<<\n"; for(i=0; selamat[i]!=NULL; i++) {
printf("%c",selamat[i]); for(j=0; j<=9999999; j++) { }
} for(i=0; gerak[i]!=NULL; i++) {
printf("%c",gerak[i]); for(j=0; j<=9999999; j++){ }
} for(i=0; coba[i]!=NULL; i++) {
printf("%c",coba[i]); for(j=0; j<=9999999; j++){ }
} printf("\n\n\t\t\tTekan sembarang tombol"); getch(); system("cls"); garis(); garis(); printf("\n\t\t\tPROGRAM GELOMBANG"); printf("\n\n\n\t\t\tNama pengguna: ");
fgets(nama,30,stdin); history(); menu_utama();
void menu_utama(){ system("cls"); FILE *A; garis(); garis(); A=fopen("Main.txt", "r"); c=getc(A); while (c!=EOF){
putchar(c); c=getc(A);
} garis(); garis(); menuutama:; printf("\nMasukkan pilihan : "); scanf("%s", &pil); switch (pil){
case '1':
teodas(); break; case '2':
perhitungan(); break; case '3':
aplikasi(); break; case '4':
tentang(); break; case '5':
keluar(); break; default : printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto menuutama; break;
} fclose(A);
void teodas(){ system("cls"); FILE *teo; teo=fopen("teodas.txt","r"); garis(); c=getc(teo); while(c!=EOF){
putchar(c); c=getc(teo); putchar(c); c=getc(teo);
case '1':
pengertian(); break; case '2':
macam(); break; case '3':
sifat1(); break; case '4':
superposisi(); break; case '0':
menu_utama(); default:{ printf("Pilihan yang anda masukkan salah, silahkan ulangi!");
goto menuteo;
void perhitungan(){ system("cls"); FILE *hitung; hitung=fopen("hitung.txt","r"); c=getc(hitung); while(c!=EOF){
putchar(c); c=getc(hitung);
} fclose(hitung); menuhit: printf("\nMasukkan pilihan : "); scanf("%s", &pil); switch (pil){
case '1':
besaran(); break; case '2':
berdiri(); break; case '0':
menu_utama(); break; default: printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto menuhit;
void aplikasi(){ system("cls"); garis(); FILE *A; A=fopen("menuapps.txt","r"); c=getc(A); while (c!=EOF){ void aplikasi(){ system("cls"); garis(); FILE *A; A=fopen("menuapps.txt","r"); c=getc(A); while (c!=EOF){
} garis(); fclose(A); pilih: printf("\nMasukkan pilihan: "); scanf("%s", &pil); switch (pil){
case '0':
menu_utama(); break; case '1':
celah(); break; case '2':
interf(); break; default:{ printf("\nPilihan yang anda masukkan salah, silahkan ulangi!\n");
goto pilih;
void tentang(){ system("cls"); FILE *about; about=fopen("tentang.txt", "r"); c=getc(about); while (c!=EOF){
putchar(c); c=getc(about);
} fclose(about); pilih: printf("\nMasukkan pilihan : "); scanf("%s", &pil); switch (pil){
case '0':
menu_utama(); break; default:{ printf("\n\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto pilih;
void keluar(){ system("cls"); FILE *keluar; keluar=fopen("keluar.txt","r"); c=getc(keluar); while (c!=EOF){
putchar(c); c=getc(keluar);
} fclose(keluar); pilih: } fclose(keluar); pilih:
case '0':
system("cls"); exit(EXIT_FAILURE); break;
case '1':
komen(); break; default: printf("Pilihan yang anda masukkan salah, silahkan ulangi!");
goto pilih;
void history(){ time_t t; time(&t); FILE *H; H=fopen("history.txt","a"); fprintf(H, "Nama pengguna\t: %s", nama); fprintf(H, "Waktu akses\t: %s\n", ctime(&t)); fclose(H);
void komen(){ garis(); time_t t; time(&t); FILE *A; char k, komen[600]; A=fopen("komen.txt","a"); printf("Komentar : "); gets(komen); i=strlen(komen); while (k!='\n'){
scanf("%c", &k); komen[i++]=k;
} komen[i-1]=0; fprintf(A, "Nama pengguna\t: %s", nama); fprintf(A, "Waktu akses\t: %s", ctime(&t)); fprintf(A, "Komentar\t: %s\n\n", komen); fclose(A); printf("\nTerima kasih atas komentar yang anda
berikan.\n"); garis(); printf("Ingin melihat komentar pengguna lain?\n>> (1)
Lihat\n>> (2) Keluar\n"); pilih: printf("Masukan pilihan : "); scanf("%s", &pil); switch (pil){
case '1':
system("cls"); FILE *A; A=fopen("komen.txt","r"); c=getc(A); while (c!=EOF){ system("cls"); FILE *A; A=fopen("komen.txt","r"); c=getc(A); while (c!=EOF){
} printf("\n>> (0) Keluar\n"); pilih2: printf("Masukkan pilihan : "); scanf("%s",
&pil);
switch (pil){ case '0':
system("cls"); exit(EXIT_FAILURE); break;
default: {
printf("Pilihan yang anda masukan salah, silahkan ulangi!");
goto pilih2; break;
} } break; case '2':
exit(EXIT_FAILURE); break; default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void pengertian(){ system("cls"); FILE *T; T=fopen("pengertian.txt","r"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); printf("\n\n(0) Kembali"); pilih: printf("\nMasukan pilihan : "); scanf("%s", &pil); switch (pil){
case '0':
teodas(); break; default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void macam(){ system("cls"); FILE *T; T=fopen("macam.txt","r"); c=getc(T); while(c!=EOF){ void macam(){ system("cls"); FILE *T; T=fopen("macam.txt","r"); c=getc(T); while(c!=EOF){
} fclose(T); garis(); printf("\n\n>> (0) Kembali\n\n"); pilih: printf("Masukan pilihan : "); scanf("%s", &pil); switch (pil){
case '0':
teodas(); break; default: printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto pilih;
void sifat1(){ system("cls"); FILE *T; T=fopen("sifat1.txt","r"); garis(); printf("\t\t\t\t<< SIFAT GELOMBANG >>\n"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); pilih: printf("\nMasukkan Pilihan: "); scanf("%s", &pil); switch (pil){
case '0':
teodas(); break;
case '1':
sifat2(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void sifat2(){ system("cls"); FILE *T; T=fopen("sifat2.txt","r"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); } fclose(T);
case '0':
sifat1(); break;
case '1':
sifat3(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void sifat3(){ system("cls"); FILE *T; T=fopen("sifat3.txt","r"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); pilih: printf("\nMasukkan Pilihan: "); scanf("%s", &pil); switch (pil){
case '0':
sifat2(); break;
case '1':
sifat4(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void sifat4(){ system("cls"); FILE *T; T=fopen("sifat4.txt","r"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); pilih: printf("\nMasukkan Pilihan: "); scanf("%s", &pil); switch (pil){
case '0': case '0':
case '1':
teodas(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void superposisi(){ system("cls"); FILE *T; T=fopen("superposisi.txt","r"); c=getc(T); while(c!=EOF){
putchar(c); c=getc(T);
} fclose(T); printf("\n\n>> (0) Kembali\n\n"); garis(); pilih: printf("Masukan pilihan : "); scanf("%s", &pil); switch (pil){
case '0':
teodas(); break; default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void besaran(){ system("cls"); FILE*B; int L,n,a,b,V=340,d; float A,k,w,f,f1,v,lamda,lamda1,Y,x,t,T; printf("Perhitungan Besaran Gelombang\n\n"); printf("\nMasukkan amplitudo (cm) : "); scanf("%f",&A); printf("Masukkan bilangan gelombang (1/cm) : ");
scanf("%f",&k); printf("Masukkan frekuensi sudut (rad/s) : "); scanf("%f",&w);
printf("\nPersamaan umum gelombang : Y=Asin(kx+wt)\n"); printf("Persamaan gelombang yang didapat :
Y=%.2fsin(%.2fx+%.2ft) dengan Y, x dalam cm dan t dalam sekon",A,k,w);
lamda=(2*pi)/k; f=w/(2*pi); T=1/f; v=lamda*f; lamda=(2*pi)/k; f=w/(2*pi); T=1/f; v=lamda*f;
printf("\n\nMenghitung besarnya simpangan\n"); printf("Masukkan nilai x (cm) :"); scanf("%f",&x); printf("Masukkan waktu (sekon) :"); scanf("%f",&t); Y=A*sin((k*x+w*t)*rad); printf("\t>>>>>||||| ""SIMPANGAN"" |||||<<<<<\n"); printf("\nBesar simpangan : %.2f meter",Y); printf("\n\n\n\n\n(1) Kembali ke pilihan\n(2) Menu
Utama\n"); pilih: printf("Pilihan: "); scanf("%s",&pil); switch (pil){
case '1':
perhitungan(); break; case '2':
menu_utama(); break; default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void berdiri(){ system("cls"); FILE*B; int L,n,a,b,V=340,d, p; float A,k,w,f,f1,v,lamda,lamda1,phi=3.14,Y,x,t,T; printf("Perhitungan Gelombang Stasioner\n\n"); printf("Masukkan panjang pipa organa (cm) : ");
scanf("%d",&L); printf("Masukkan orde : "); scanf("%d",&n); printf("\n\n"); ab: printf("Gelombang stasioner :\n(1) pada tali\n(2) pipa
organa terbuka\n(3) pipa organa tertutup\n(4) selesai\n"); pilih: printf("Pilihan: "); scanf("%s",&pil); switch (pil){
case '1':
system("cls"); printf("\t>>>>>||||| ""TALI""
|||||<<<<<\n\n");
lamda=2*L/n; printf("panjang gelombang orde ke-%d : %.2f
cm\n",n,lamda);
f=V/lamda; printf("Frekuensi gelombang pada tali : %.2f
Hz\n",f);
printf("\n\n(0) Kembali"); pilih2: printf("\nMasukkan pilihan: "); scanf("%d",
&p);
if (p==0) { if (p==0) {
printf("Pilihan yang anda masukkan salah, silahkan ulangi!\n");
goto pilih2; } break; case '2':
system("cls"); printf("\t>>>>>||||| ""PIPA ORGANA TERBUKA""
|||||<<<<<\n\n");
lamda=2*L/n; printf("panjang gelombang orde ke-%d : %.2f
cm\n",n,lamda);
f=V/lamda; printf("Frekuensi gelombang pada pipa organa
terbuka : %.2f Hz\n",f);
printf("\n\n(0) Kembali"); pilih3: printf("\nMasukkan pilihan: "); scanf("%d",
&p);
if (p==0) { system("cls"); goto ab; } else {
printf("Pilihan yang anda masukkan salah, silahkan ulangi!\n");
goto pilih3; } break; case '3':
system("cls"); printf("\t>>>>>||||| ""PIPA ORGANA TERTUTUP""
|||||<<<<<\n\n");
lamda=4*L/n; printf("panjang gelombang orde ke-%d : %.2f
cm\n",n,lamda);
f=V/lamda; printf("Frekuensi gelombang pada pipa organa
tertutup : %.2f Hz\n",f);
printf("\n\n(0) Kembali"); pilih4: printf("\nMasukkan pilihan: "); scanf("%d",
&p);
if (p==0) { system("cls"); goto ab; } else {
printf("Pilihan yang anda masukkan salah, silahkan ulangi!\n");
goto pilih4; } break; case '4':
system("cls"); menu_utama(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih; goto pilih;
SELURUH RUANGAN ||<<\n\n"); printf(">> Tekan sembarang tombol <<"); getch(); printf("\n\nILUSTRASI :\n\n"); A=fopen("ruangancahayadifraksi.txt","r"); c=getc(A); while(c!=EOF){
putchar(c); c=getc(A);
} fclose(A); printf("\n\n(1) Kembali\n(2) Lanjut menghitung"); m: printf("\n\nPilihan: "); scanf("%s", &m); switch (m){
case '1':
aplikasi(); break;
case '2':
system("cls"); printf("Panjang ruangan (p) -meter- : ");
scanf("%f",&p); printf("Lebar ruangan (l) -meter- : "); scanf("%f",&l); printf("Tinggi ruangan (t) -meter- : "); scanf("%f",&t); printf("Panjang gelombang -nanometer- : "); scanf("%f",&lamda);
d1=(2*l*lamda)/(p*1000000000); printf("\nlebar celah horizontal (x) : %.20f
meter\n",d1);
d2=2*l*lamda/(t*1000000000); printf("\nlebar celah vertikal (y) : %.20f
meter\n",d2);
getch(); pilih: printf("\n>> (1) Konversi ke satuan yang
lain\n>> (2) Kembali\n");
printf("Masukkan pilihan: ");
scanf("%s",&pil);
switch (pil){ case '1': konversi: system("cls"); printf("konversi ke :\n(1)
Kilometer\n(2) Milimeter\n(3) Mikrometer\n(4) Nanometer\n(5)
Kembali\n");
aa: printf("Pilihan: ");
scanf("%s",&a);
switch (a){ case '1':
d1=d1/1000; d2=d2/1000; printf("\nlebar celah
horizontal (x) : %.20f kilometer\n",d1); printf("\nlebar celah vertikal (y) : %.20f kilometer\n",d2);
a1: printf("\n\n(1)
Kembali ke pilihan konversi\n(2) Keluar\nPilihan :"); scanf("%s",&d);
switch (d){ case '1': goto konversi; break; case '2': celah(); break; default:
printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto a1; break;
} break;
case '2':
d1=d1*1000; d2=d2*1000; printf("\nlebar celah
horizontal (x) : %.20f milimeter\n",d1); printf("\nlebar celah vertikal (y) : %.20f milimeter\n",d2);
a2: printf("\n\n(1)
Kembali ke pilihan konversi\n(2) Keluar\nPilihan :"); scanf("%s",&d);
switch (d){ case '1': goto konversi; break; case '2': celah(); break; default:
printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto a2; break; printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto a2; break;
d1=d1*1000000; d2=d2*1000000; printf("\nlebar celah
horizontal (x) : %.20f mikrometer\n",d1); printf("\nlebar celah vertikal (y) : %.20f mikrometer\n",d2);
a3: printf("\n\n(1)
Kembali ke pilihan konversi\n(2) Keluar\nPilihan :"); scanf("%s",&d);
switch (d){ case '1': goto konversi; break; case '2': celah(); break; default:
printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto a3; break;
} break;
case '4':
d1=d1*1000000000; d2=d2*1000000000; printf("\nlebar celah
horizontal (x) : %.20f nanometer\n",d1); printf("\nlebar celah vertikal (y) : %.20f nanometer\n",d2);
a4: printf("\n\n(1)
Kembali ke pilihan konversi\n(2) Keluar\nPilihan :"); scanf("%s",&d);
switch (d){ case '1': goto konversi; break; case '2': celah(); break; default:
printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto a3; break;
} break;
case '5':
celah(); break; celah(); break;
printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n"); goto aa; break;
} case '2': system("cls"); printf("Selesai !"); aplikasi();
default:
printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto pilih; break;
} default: printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto m;
void interf(){ system("cls"); float v, f, x1, x2, Yr, A, Ar, Amaks, lamda, d, deltax ,
bedafasa, bedafasaa, k, w;
printf("\t>>|| MENENTUKAN POSISI SPEAKER DAN AMPLITUDO MAKSIMUM DARI 2 SPEAKER ||<<\n\n"); printf("\n(1) Apa yang akan dilakukan pada aplikasi ini?\n(2) Mulai hitung"); awal: printf("\nMasukkan pilihan: "); scanf("%s", &pil); switch (pil){
case '1':
interf1(); break;
case '2':
system("cls"); printf("\t>>|| MENENTUKAN POSISI SPEAKER DAN
AMPLITUDO MAKSIMUM DARI 2 SPEAKER ||<<\n\n"); printf("Frekuensi speaker (Hz)\t\t\t\t: "); scanf("%f",&f); printf("Cepat rambat gelombang bunyi speaker (m/s)\t: "); scanf("%f",&v);
jarak: printf("Jarak speaker 1 ke pendengar (m)\t\t:
"); scanf("%f",&x1); printf("Jarak speaker 2 ke pendengar (m)\t\t: "); scanf("%f",&x2);
if(x2>=x1) {
printf("silahkan ulangi ! (jarak speaker 1 harus lebih besar !)\n");
goto jarak; } system("cls"); goto jarak; } system("cls");
getch(); lamda=v/f; system("cls"); printf("\npanjang gelombang\t: %.4f",lamda); getch(); d=pow((pow(x1,2) - pow(x2,2)),0.5); printf("\nJarak antara speaker\t: %.4f",d); getch(); deltax=x1-x2; bedafasaa=(2*pi*deltax/lamda); bedafasa=(2*pi*deltax/lamda)*rad; printf("\nBeda fasa\t\t: %.4f pi atau %.4f
derajat",bedafasaa,bedafasa);
getch(); k=bedafasa/deltax; printf("\nBilangan gelombang\t: %.2f 1/m",k); getch(); w=2*pi*f; printf("\nFrekuensi sudut\t\t: %.2f rad/s",w); getch(); printf("\n\nPersamaan gelombang yang di dapat
:\n\n\n\t\tY=2Acos(%.2f/2)sin(%.2fx-%.2ft-%.2f/2)\n\nketerangan :\n1. Y dan X dalam meter\n2. t dalam sekon\n",bedafasa,k,w,bedafasa);
getch(); system("cls"); Amaks=2*cos(bedafasa/2); printf("\nAmplitudo maksimum\t: %.4fA meter
//dengan persamaan Ar = 2Acos(%.2f/2)",Amaks,bedafasa);
getch(); printf("\nMasukkan nilai A (m)\t:");
scanf("%f",&A);
Amaks=2*A*cos(bedafasa/2); printf("\nAmplitudo maksimum\t: %.4f
meter",Amaks);
getch();
system("cls"); printf("Jadi, posisi speakernya adalah sebagai
berikut :\n\n");
printf("\nILUSTRASI :\n\n"); printf(" speaker 1\n"); printf(" /| - - v=%.2f m/s \n",v); printf(" _ / | - -\n"); printf(" | \\ | *\n"); printf(" | \\| - - *\n"); printf(" | *\n"); printf(" | *\n"); printf(" %.2f m * %.2f
m\n",d,x1); printf(" | *\n"); printf(" | *\n"); m\n",d,x1); printf(" | *\n"); printf(" | *\n");
*\n"); printf(" | / | - - * @\n"); printf(" - \\ |* * * * * * * * * * * * * * * @ @ pendengar\n"); printf(" \\| - - %.2f m @\n",x2);
printf(" speaker 2\n"); printf("\nAsumsi : Sumber koheren\nSehingga
frekuensi speaker 1 = frekuensi speaker 2 = %.2f Hz",f);
getch(); printf("\n\n>> (0) Kembali\n>> (1) Menu
aplikasi\n");
garis(); pilih: printf("\nMasukkan pilihan: "); scanf("%s",
&pil);
switch (pil){ case '0': interf(); break; case '1': aplikasi(); break; default:{
printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto pilih; break;
} } default: printf("\nPilihan yang anda masukkan salah, silahkan ulangi!");
goto awal;
void interf1(){ system("cls"); FILE *in; in=fopen("interf1.txt","r"); c=getc(in); while (c!=EOF){
putchar(c); c=getc(in);
} garis(); fclose(in); pilih: printf("\nMasukkan pilihan: "); scanf("%s", &pil); switch (pil){
case '0':
interf(); break;
case '1':
interf2(); interf2();
goto pilih;
void interf2(){ system("cls"); FILE *in; in=fopen("interf2.txt","r"); c=getc(in); while (c!=EOF){
putchar(c); c=getc(in);
} garis(); pilih: printf("\nMasukkan pilihan: "); scanf("%s", &pil); switch (pil){
case '0':
interf1(); break;
case '1':
interf(); break;
default: printf("\nPilihan yang anda masukan salah, silahkan ulangi!\n");
goto pilih;
void garis(){ for ( i=0; i<80; i++){ printf("="); } printf("\n");