diff --git a/ASD_Task_4.depend b/ASD_Task_4.depend index a544662..e23913c 100644 --- a/ASD_Task_4.depend +++ b/ASD_Task_4.depend @@ -19,3 +19,23 @@ "player.h" +1583422943 source:c:\latihan coding\asd_task_4\list.cpp + "list.h" + +1582973393 c:\latihan coding\asd_task_4\list.h + + + + +1583422826 source:c:\latihan coding\asd_task_4\main.cpp + "player.h" + "list.h" + + +1582871284 c:\latihan coding\asd_task_4\player.h + "list.h" + +1583421257 source:c:\latihan coding\asd_task_4\player.cpp + "player.h" + + diff --git a/ASD_Task_4.layout b/ASD_Task_4.layout index 5ec49e7..0a7165e 100644 --- a/ASD_Task_4.layout +++ b/ASD_Task_4.layout @@ -2,29 +2,29 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/asset/baka.wav b/asset/baka.wav new file mode 100644 index 0000000..5d2727c Binary files /dev/null and b/asset/baka.wav differ diff --git a/asset/explosioon.wav b/asset/explosioon.wav new file mode 100644 index 0000000..d07dc25 Binary files /dev/null and b/asset/explosioon.wav differ diff --git a/asset/unyo.m4a b/asset/unyo.m4a new file mode 100644 index 0000000..9e5f55d Binary files /dev/null and b/asset/unyo.m4a differ diff --git a/bin/Debug/ASD_Task_4.exe b/bin/Debug/ASD_Task_4.exe new file mode 100644 index 0000000..8a7caaf Binary files /dev/null and b/bin/Debug/ASD_Task_4.exe differ diff --git a/list.cpp b/list.cpp index 847a957..e1453d2 100644 --- a/list.cpp +++ b/list.cpp @@ -5,7 +5,7 @@ void createList(List &L) { * FS : first(L) diset Nil */ //------------- YOUR CODE HERE ------------- - + first(L) = NIL; //---------------------------------------- } @@ -15,9 +15,12 @@ address allocate(infotype x) { * next dan prev elemen = Nil */ - address P = NULL; + address P = NIL; //------------- YOUR CODE HERE ------------- - + P = new elmlist; + info(P) = x; + next(P) = NIL; + prev(P) = NIL; //---------------------------------------- return P; } @@ -27,7 +30,7 @@ void deallocate(address &P) { * FS : menghapus elemen yang ditunjuk oleh P (delete) */ //------------- YOUR CODE HERE ------------- - + delete P; //---------------------------------------- } @@ -37,7 +40,18 @@ void insertFirst(List &L, address P) { * FS : elemen yang ditunjuk P menjadi elemen pertama pada List L */ //------------- YOUR CODE HERE ------------- - + if(first(L) == NIL){ + first(L) = P; + next(P) = P ; + prev(P) = P ; + } + else{ + next(P) = first(L) ; + prev(P) = prev(first(L)) ; + next(prev(first(L))) = P ; + prev(first(L)) = P ; + first(L) = P ; + } //---------------------------------------- } @@ -47,7 +61,15 @@ void insertLast(List &L, address P) { * FS : elemen yang ditunjuk P menjadi elemen terakhir pada List L */ //------------- YOUR CODE HERE ------------- - + if(first(L) == NIL){ + insertFirst(L,P); + } + else{ + next(P) = first(L); + prev(P) = prev(first(L)); + next(prev(first(L))) = P; + prev(first(L)) = P; + } //---------------------------------------- } @@ -58,9 +80,15 @@ address findElmByID(List L, infotype x) { mengembalikan Nil jika tidak ditemukan */ - address P = NULL; + address P = NIL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do{ + P = next(P); + } while(P!= first(L) && info(P).ID != x.ID); + if(P == first(L) && info(P).ID != x.ID){ + P = NIL; + } //---------------------------------------- return P; } @@ -72,9 +100,15 @@ address findElmByName(List L, infotype x) { mengembalikan Nil jika tidak ditemukan */ - address P = NULL; + address P = NIL; //------------- YOUR CODE HERE ------------- - + P = first(L); + do{ + P = next(P); + } while(P!= first(L) && info(P).name != x.name); + if(P == first(L) && info(P).name != x.name){ + P = NIL; + } //---------------------------------------- return P; } @@ -85,7 +119,21 @@ void deleteFirst(List &L, address &P) { * FS : elemen pertama di dalam List L dilepas dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + P = first(L) ; + if (next(P) == first(L)) + { + first(L) = NIL ; + next(P) = NIL; + prev(P) = NIL; + } + else + { + first(L) = next(first(L)); + next(prev(P)) = first(L); + prev(first(L)) = prev(P); + next(P) = NIL; + prev(P) = NIL; + } //---------------------------------------- } @@ -95,29 +143,49 @@ void deleteLast(List &L, address &P) { * FS : elemen tarakhir di dalam List L dilepas dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + P = prev(first(L)); + next(prev(P)) = first(L); + prev(first(L)) = prev(P); + next(P) = NIL; + prev(P) = NIL; //---------------------------------------- } void insertAfter(List &L, address &Prec, address P) { /** - * IS : Prec dan P tidak NULL + * IS : Prec dan P tidak NIL * FS : elemen yang ditunjuk P menjadi elemen di belakang elemen yang * ditunjuk pointer Prec */ //------------- YOUR CODE HERE ------------- - + prev(next(Prec)) = P ; + next(P) = next(Prec) ; + next(Prec) = P ; + prev(P) = Prec ; //---------------------------------------- } void deleteAfter(List &L, address &Prec, address &P) { /** - * IS : Prec tidak NULL + * IS : Prec tidak NIL * FS : elemen yang berada di belakang elemen Prec dilepas * dan disimpan/ditunjuk oleh P */ //------------- YOUR CODE HERE ------------- - + P = next(Prec) ; + if (next(Prec) == Prec) + { + next(P) = NIL ; + prev(P) = NIL ; + next(Prec) = Prec ; + prev(Prec) = Prec ; + } + else + { + next(Prec) = next(P) ; + prev(next(P)) = Prec ; + next(P) = NIL ; + prev(P) = NIL ; + } //---------------------------------------- } - diff --git a/list.h b/list.h index 4468d0f..b865e5a 100644 --- a/list.h +++ b/list.h @@ -9,6 +9,7 @@ #define next(P) P->next #define prev(P) P->prev #define info(P) P->info +#define NIL NULL using namespace std; @@ -29,15 +30,15 @@ typedef struct elmlist *address; struct elmlist { //------------- YOUR CODE HERE ----------- - - + infotype info; + address next; + address prev; //---------------------------------------- }; struct List { //------------- YOUR CODE HERE ----------- - - + address first; //---------------------------------------- }; @@ -61,5 +62,6 @@ void deleteAfter(List &, address &, address &); address findElmByID(List, infotype ); address findElmByName(List, infotype ); +void insertAndSort(List &, infotype ); #endif // LIST_H_INCLUDED diff --git a/main.cpp b/main.cpp index a66a5c1..997c51c 100644 --- a/main.cpp +++ b/main.cpp @@ -122,10 +122,8 @@ void runMenu(int menu) { case 2: // insert last music //------------- YOUR CODE HERE ------------- - cout<<"UNDER MAIN TENIS"<>x.name; P = findElmByName(L, x); - if(P != NULL){ + if(P != NIL){ cout<<"music found"<>x.ID; + P = findElmByID(L, x); + if(P != NIL){ + cout<<"music found"<>x.name; + cin>>x.ID; deleteMusicByID(L, x); cout<<"press enter";getche(); break; diff --git a/obj/Debug/list.o b/obj/Debug/list.o new file mode 100644 index 0000000..4611027 Binary files /dev/null and b/obj/Debug/list.o differ diff --git a/obj/Debug/main.o b/obj/Debug/main.o new file mode 100644 index 0000000..7155c1e Binary files /dev/null and b/obj/Debug/main.o differ diff --git a/obj/Debug/player.o b/obj/Debug/player.o new file mode 100644 index 0000000..ceae783 Binary files /dev/null and b/obj/Debug/player.o differ diff --git a/player.cpp b/player.cpp index 31ef288..57ffd1f 100644 --- a/player.cpp +++ b/player.cpp @@ -1,30 +1,42 @@ #include "player.h" #include -int randomInt(int max_int) { +int randomInt(int max_int) +{ /** YOU DON'T NEED TO MODIFY THIS */ - srand(time(NULL)); + srand(time(NIL)); return (rand() % max_int) + 1; } -void printInfo(List L) { +void printInfo(List L) +{ /** * PR : menampilkan informasi ID, nama, dan lokasi file * YOU DON'T NEED TO MODIFY THIS */ address Q = first(L); - do { - cout<<"name : "< 0) { + P = first(L); + int ran = randomInt(nlist); + while (ran != 0) { + P = next(P); + ran--; + } + address Q; + deleteAfter(L, prev(P), Q); + insertFirst(L, Q); + nlist--; + } //---------------------------------------- } -void playRepeat(List &L, int n) { +void playRepeat(List &L, int n) +{ /** * PR : memainkan seluruh lagu di dalam list * dari lagu pertama hingga terakhir sebanyak n kali */ //------------- YOUR CODE HERE ------------- - - cout<<"UNDER MAIN TENIS"<