diff --git a/ASD_Task_3.depend b/ASD_Task_3.depend index 831bfcc..edc3091 100644 --- a/ASD_Task_3.depend +++ b/ASD_Task_3.depend @@ -52,3 +52,31 @@ "operation.h" "my_data.h" +1582381586 source:d:\std\github\asd_task_3\list.cpp + "list.h" + "my_data.h" + +1581923548 d:\std\github\asd_task_3\list.h + + "my_data.h" + +1581923578 d:\std\github\asd_task_3\my_data.h + + +1582382347 source:d:\std\github\asd_task_3\main.cpp + + "list.h" + "operation.h" + "my_data.h" + +1581871845 d:\std\github\asd_task_3\operation.h + "list.h" + +1582382384 source:d:\std\github\asd_task_3\my_data.cpp + "my_data.h" + +1582384939 source:d:\std\github\asd_task_3\operation.cpp + "list.h" + "operation.h" + "my_data.h" + diff --git a/ASD_Task_3.layout b/ASD_Task_3.layout index 17b1801..f9f8618 100644 --- a/ASD_Task_3.layout +++ b/ASD_Task_3.layout @@ -2,39 +2,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/bin/Debug/ASD_Task_3.exe b/bin/Debug/ASD_Task_3.exe new file mode 100644 index 0000000..3dafa5a Binary files /dev/null and b/bin/Debug/ASD_Task_3.exe differ diff --git a/list.cpp b/list.cpp index fe0655c..1b072ad 100644 --- a/list.cpp +++ b/list.cpp @@ -6,9 +6,8 @@ void createList(List &L) { * FS : set first(L) and last(L) with Null */ //-------------your code here------------- - your code here - - + first(L)=NULL; + last(L)=NULL; //---------------------------------------- } @@ -19,9 +18,13 @@ address allocate(infotype x) { address P; //-------------your code here------------- - your code here - - + P=new elmlist; + info(P).ID=x.ID; + info(P).name=x.name; + info(P).Score=x.Score; + info(P).Rank=x.Rank; + next(P)=NULL; + prev(P)=NULL; //---------------------------------------- return P; } @@ -31,9 +34,7 @@ void deallocate(address &P) { * FS : delete element pointed by P */ //-------------your code here------------- - your code here - - + delete P; //---------------------------------------- } @@ -43,9 +44,14 @@ void insertFirst(List &L, address P) { * FS : element pointed by P became the first element in List L */ //-------------your code here------------- - your code here - - + if(first(L)==NULL && last(L)==NULL) { + first(L)=P; + last(L)=P; + } else { + next(P) = first(L); + prev(first(L)) = P; + first(L) = P; + } //---------------------------------------- } @@ -55,9 +61,13 @@ void insertLast(List &L, address P) { * FS : element pointed by P became the last element in List L */ //-------------your code here------------- - your code here - - + if (first(L)==NULL && last(L)==NULL){ + insertFirst(L, P); + } else { + next(last(L))=P; + prev(P)=last(L); + } + last(L) = P; //---------------------------------------- } @@ -70,9 +80,10 @@ address findElm(List L, infotype x) { address P; //-------------your code here------------- - your code here - - + P=first(L); + while(P!=NULL && info(P).ID!=x.ID){ + P=next(P); + } //---------------------------------------- return P; } @@ -83,10 +94,12 @@ void deleteFirst(List &L, address &P) { * FS : first element in List L is removed and is pointed by P */ //-------------your code here------------- - your code here - - - + if (first(L)==NULL && last(L)==NULL){ + insertFirst(L, P); + } else { + first(L)=next(P); + prev(next(P))=NULL; + } //---------------------------------------- } @@ -96,10 +109,12 @@ void deleteLast(List &L, address &P) { * FS : last element in List L is removed and is pointed by P */ //-------------your code here------------- - your code here - - - + if (first(L)==last(L)){ + insertFirst(L, P); + } else { + last(L)=prev(last(L)); + next(last(L))=NULL; + } //---------------------------------------- } @@ -109,9 +124,13 @@ void printInfo(List L) { * call the view_data function from my_data.h to print the info */ //-------------your code here------------- - your code here - - + address P; + P=first(L); + while(P!=NULL){ + view_data(info(P)); + P=next(P); + } + cout< * -* Type List : < -* first : address -* last : address +* Type List : < +* first : address +* last : address * > * **/ @@ -37,14 +37,16 @@ typedef struct elmlist *address; struct elmlist{ //------------- your code here ----------- - + infotype info; + address next; + address prev; //---------------------------------------- }; struct List{ //------------- your code here ----------- - - + address first; + address last; //---------------------------------------- }; diff --git a/main.cpp b/main.cpp index 9e0b483..525d4c3 100644 --- a/main.cpp +++ b/main.cpp @@ -20,7 +20,7 @@ int main() { void mainMenu() { address P; - infotype X; + infotype x; /** * IS : List has been created * PR : prints menu to user @@ -49,9 +49,49 @@ void mainMenu() { cin>>choice; switch(choice) { case 1: - X = create_data(); - P = allocate(X); - insertFirst(L,P) + x = create_data(); + P = allocate(x); + insertFirst(L,P); + break; + case 2: + printInfo(L); + break; + case 3: + cout<<"Masukkan ID yang ingin dicari : "; + cin>>x.ID; + P=findElm(L, x); + if(P!=NULL){ + view_data(info(P)); + } else { + cout<<"Data tidak ditemukan"<>x.ID; + P=findElm(L, x); + if (P!=NULL) { + edit_data(info(P)); + } else { + cout<< "Data tidak Ditemukan"; + } + break; + case 5: + cout<<"Masukkan ID yang ingin dihapus : "; + cin>>x.ID; + if(findElm(L, x) != NULL) { + deletebyID(L, x.ID); + } else { + cout<<"Data tidak Ditemukan"<>d.ID; + cout<< "Masukkan Nama Anda : "; + cin>>d.name; + cout<<"Masukkan Ranking : "; + cin>>d.Rank; + cout<<"Masukkan score : "; + cin>>d.Score; // =========================== return d; } @@ -31,12 +33,7 @@ void view_data(mytype d) { */ // =========================== - // YOUR CODE HERE - your code here - - - - + cout<>d.name; + cout<< "Masukkan Pergantian Rank : "; + cin>>d.Rank; + cout<<"Masukkan Pergantian Score : "; + cin>>d.Score; // =========================== } diff --git a/my_data.h b/my_data.h index 2937b48..41bc5c9 100644 --- a/my_data.h +++ b/my_data.h @@ -5,9 +5,9 @@ using namespace std; /** - CLASS : - NAME : - STUDENT ID : + CLASS : IF-43-05 + NAME : Balqis Sayyidahtul Atikah + STUDENT ID : 1301193480 **/ struct mytype { @@ -20,8 +20,10 @@ struct mytype { */ //================================================= // YOUR CODE STARTS HERE - your code here - + int ID; + string name; + int Rank; + float Score; // YOUR CODE ENDS HERE //================================================= }; @@ -29,6 +31,6 @@ struct mytype { mytype create_data(); void view_data(mytype d); -void edit_data(mytype &d); +void edit_data(mytype &d); #endif // MY_DATA_H_INCLUDED diff --git a/obj/Debug/list.o b/obj/Debug/list.o new file mode 100644 index 0000000..8cfafc4 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..b7692c0 Binary files /dev/null and b/obj/Debug/main.o differ diff --git a/obj/Debug/my_data.o b/obj/Debug/my_data.o new file mode 100644 index 0000000..74cd49e Binary files /dev/null and b/obj/Debug/my_data.o differ diff --git a/obj/Debug/operation.o b/obj/Debug/operation.o new file mode 100644 index 0000000..253c817 Binary files /dev/null and b/obj/Debug/operation.o differ diff --git a/operation.cpp b/operation.cpp index c2dc0b0..eb160d3 100644 --- a/operation.cpp +++ b/operation.cpp @@ -1,7 +1,7 @@ #include "list.h" #include "operation.h" #include "my_data.h" - + void insertAndSort(List &L, infotype x) { /** @@ -14,9 +14,17 @@ void insertAndSort(List &L, infotype x) { */ //-------------your code here------------- - your code here - - + address P, Prec; + P=first(L); + if (P==NULL || info(P).ID > x.ID) { + insertFirst(L, allocate(x)); + } else if (findElm(L, x)==NULL) { + while (P != NULL && info(P).ID < x.ID) { + Prec=P; + P=next(P); + } + insertAfter(L, Prec, allocate(x)); + } //---------------------------------------- } @@ -26,12 +34,19 @@ void deletebyID(List &L, int id_x) { * IS : List L may be empty * FS : an element with ID info = id_x is deleted from List L (deallocate) */ - address Prec, P; //-------------your code here------------- - your code here - - + P=first(L); + if(P==first(L) && id_x == info(P).ID) { + deleteFirst(L, P); + } else { + while (P!=NULL) { + if (id_x == info(P).ID && first(L) != last(L)) { + deleteAfter(L, prev(P), P); + } + P=next(P); + } + } //---------------------------------------- } @@ -43,8 +58,14 @@ void savePassedMember(List &L, List &L2){ */ address P; //-------------your code here------------- - your code here - - + P=first(L); + while (P!=NULL){ + if(info(P).Score>80){ + address Prec; + Prec=allocate(info(P)); + insertLast(L2, Prec); + } + P=next(P); + } //---------------------------------------- }