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");