Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // E-Test by Dedi Susanto
- // powered by Indonesia C/C++/C#/Objective-C Programmer Community
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <windows.h>
- void baris(); //fungsi baris talosi
- void talosi(); //fungsi talosi : tampilan log in dan sign out
- void login(); //fungsi log in
- void signup(); //fungsi sign up
- void kontalosi(int x); //fungsi pasca input talosi; kontalosi : kondisi talosi
- void soal1(); //fungsi soal ke 1
- void soal2(); //fungsi soal ke 2
- void test(); //fungsi test yang berisikan fungsi soal1 dan soal2
- void readPass(char *);
- char h=0;
- int a;
- static struct
- {
- char nama[100];
- char pass[100];
- char jawab[2];
- }
- akun[60];
- int main()
- {
- do
- {
- talosi();
- kontalosi(a);
- }
- while(a!=1);
- }
- void baris()
- {
- puts("===================================");
- }
- void talosi()
- {
- do
- {
- baris();
- puts("= kode perintah = keterangan =");
- baris();
- puts("= 1 = log in =");
- puts("= 2 = sign up =");
- baris();
- printf("masukan perintah : ");
- fflush(stdin);
- scanf("%d",&a);
- system("cls");
- }
- while(a!=1&&a!=2);
- }
- void login()
- {
- char x[100],y[100];
- input:
- printf("\t\t---LOG IN---\n");
- printf("username : ");
- fflush(stdin);
- scanf("%[^\n]",x);
- printf("password : ");
- fflush(stdin);
- readPass(y);
- system("cls");
- for(int i=0;i<60;i++)
- {
- if(strcmp(strupr(x),strupr(akun[i].nama))==0&&strcmp(strupr(y),strupr(akun[i].pass))==0)
- {
- test();
- exit(0);
- }
- }
- for(int i=0;i<60;i++)
- {
- if(strcmp(strupr(x),strupr(akun[i].nama))!=0&&strcmp(strupr(y),strupr(akun[i].pass))!=0)
- {
- goto input;
- }
- }
- }
- void signup()
- {
- printf("indeks ke-%d\n",h);
- printf("\t\t---SIGN UP---\n");
- printf("masukan username : ");
- fflush(stdin);
- scanf("%[^\n]",akun[h].nama);
- printf("masukan password : ");
- readPass(akun[h].pass);
- h++;
- system("cls");
- }
- void kontalosi(int a)
- {
- if(a==1)
- {
- login();
- }
- if(a==2)
- {
- signup();
- }
- }
- void soal1()
- {
- puts("1. Teknik sort yang bekerja dengan prinsip gelembung yang bergerak");
- puts("naik keatas secara satu persatu. Adalah teknik sort dengan metode..");
- puts("a. insertion");
- puts("b. merge sort");
- puts("c. buble sort ");
- puts("d. selection sort");
- printf("\nmasukan jawaban : ");
- }
- void soal2()
- {
- puts("2. Teknik Devide and Conquer digunakan dalam memecahkan masalah antara lain :");
- puts("a. Array");
- puts("b. Matrix");
- puts("c. Max & Min");
- puts("d. Sorting & Searching");
- printf("\nmasukan jawaban : ");
- }
- void test()
- {
- int i, poin=0;
- for(i=0;i<2;i++)
- {
- if(i==0)
- {
- soal1();
- fflush(stdin);
- scanf("%c",&akun[h].jawab[i]);
- if(akun[h].jawab[i]=='C'||akun[h].jawab[i]=='c')
- {
- poin+=50;
- }
- else
- {
- poin+=0;
- }
- system("cls");
- }
- else if(i==1)
- {
- soal2();
- fflush(stdin);
- scanf("%c",&akun[h].jawab[i]);
- if(akun[h].jawab[i]=='D'||akun[h].jawab[i]=='d')
- {
- poin+=50;
- }
- else
- {
- poin+=0;
- }
- system("cls");
- }
- }
- printf("poin anda : %d\n",poin);
- }
- void readPass(char *temp)
- /* fitur menyamarkan password ini saya copy dari
- https://learntocodes.wordpress.com/2015/12/06/c-masking-menyamarkan-input-password/
- dan saya rubah sedikit dengan mengganti syarat if default dengan isprint, meskipun
- intinya sama.
- gpp lah, biar keliatan ada usaha dan biar keliatan ga murni copas... :v
- */
- {
- int key = 0, index = 0;
- do {
- key = getch(); /* Simpan karakter yang ditekan ke dalam variabel key */
- switch (key)
- {
- /* 0 adalah kode awal untuk tombol fungsi (function key), seperti F1, F2, ..., F12
- * Misalkan jika tombol F1 ditekan, maka fungsi getch akan mengembalikan
- * nilai 0 dan menyimpan sebuah kode yang menandakan tombol F1 ditekan ke buffer.
- */
- case 0:
- /* 224 adalah kode awal untuk tombol panah, home, page up, page down, end dan lain-lain.
- * Misalkan jika tombol panah ditekan, fungsi getch akan
- * mengembalikan nilai 224 dan menyimpan sebuah kode
- * yang menandakan tombol yang ditekan ke buffer.
- */
- case 224:
- /* Fungsi getch di sini digunakan untuk membersihkan buffer */
- getch();
- break;
- /* Jika tombol back space ditekan, maka mundurkan cursor satu langkah */
- case '\b':
- if (index > 0)
- {
- index = index - 1; /* Kurangi index temp sebesar 1 */
- temp[index] = 0; /* set temp[index] menjadi kosong (NUL) */
- printf("\b \b"); /* Mundurkan cursor satu langkah */
- }
- break;
- default:
- /* Hanya karakter printable yang dapat ditekan, seperti huruf, angka dan karakter spesial */
- if (isprint(key))
- {
- temp[index] = key; /* Simpan karakter ke dalam temp[index] */
- index = index + 1; /* Naikkan nilai index sebesar 1 */
- printf("*");
- }
- }
- /* 13 adalah kode ASCII untuk karakter enter.
- * Perulangan akan terus dilakukan sampai tombol enter ditekan.
- */
- } while (key != 13);
- /* Menambahkan NUL di akhir temp yang menandakan akhir dari sebuah string */
- temp[index] = '\0';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement