Source Code
Dreammers Market
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node{
char barang[101];
int qty;
int value;
struct node *next, *prev;
}*head = NULL , *tail = NULL , *curr;
void push(const char *s , int x)
{
curr = (struct node*)malloc(sizeof(struct node));
strcpy(curr->barang,s);
curr->qty = x;
curr->value = rand()%11;
curr->next = curr->prev = NULL;
if(head == NULL)
{
head = tail = curr;
}
else if(x < head->qty || strcmp(s,head->barang) < 0)
{
curr->next = head;
head->prev = curr;
head = curr;
}
else if(x > tail->qty || strcmp(s,tail->barang) > 0)
{
tail->next = curr;
curr->prev = tail;
tail = curr;
}
else
{
struct node *temp = head;
while(temp->next->qty < x)
{
temp = temp->next;
}
curr->next = temp->next;
temp->next->prev = curr;
temp->next = curr;
curr->prev = temp;
}
}
void pop(const char *s)
{
if(head == NULL)
{
puts("Pop failed! No Data found!");
}
else if(head == tail)
{
free(head);
head = tail = NULL;
}
else if(strcmp(head->barang,s) == 0)
{
curr = head;
head = head->next;
free(curr);
head->prev = NULL;
}
else if(strcmp(tail->barang,s) == 0)
{
curr = tail;
tail = tail->prev;
free(curr);
tail->next =NULL;
}
else
{
curr = head;
while(curr != NULL && strcmp(curr->barang,s) != 0)
{
curr = curr->next;
}
if(curr == NULL)
{
printf("No item found!\n");
}
else
{
curr->next->prev = curr->prev;
curr->prev->next = curr->next;
free(curr);
printf("Remove successful!\n");
getchar();
}
}
}
void Edit(const char *s , int editqty)
{
struct node *temp = head;
while(temp != NULL && strcmp(temp->barang,s)!=0)
{
temp = temp->next;
}
if(temp != NULL)
{
temp->qty = editqty;
}
}
void popall()
{
while(head != NULL)
{
struct node *temp = head;
head = head->next;
free(temp);
}
}
void cetak()
{
int index = 1;
curr = head;
while(curr != NULL)
{
printf("%d. %s %d\n",index,curr->barang,curr->qty);
curr = curr->next;
index = index + 1;
}
printf("\n");
}
void checkout()
{
int i=1;
int x = 0;
cetak();
curr = head;
while(curr != NULL)
{
printf("%d. %s %d x %d = %d\n",i,curr->barang,curr->qty,curr->value,curr->qty*curr->value);
x += curr->qty * curr->value;
curr = curr->next;
i++;
}
printf("Total : %d\n",x);
printf("Kindness is free\n");
popall();
}
int main()
{
char item[101];
int qty;
char remove[101];
char edit[101];
int editqty;
int choose = 0;
do{
printf("1. Add item\n");
printf("2. Edit item\n");
printf("3. Remove item\n");
printf("4. Checkout\n");
printf("5. Exit\n");
printf("Please choose : ");
scanf("%d",&choose);
switch (choose) {
case 1:
printf("Input item name [1-100] : ");
getchar();
scanf("%[^\n]", item);
printf("Input qty [1-10] : ");
scanf("%d",&qty);
printf("\n");
push(item, qty);
getchar();
break;
case 2:
if(head == NULL)
{
printf("Item list is empty!\n\n");
}
else
{
printf("Input item you want to edit : ");
getchar();
scanf("%[^\n]",edit);
printf("Input qty you want to edit : ");
scanf("%d",&editqty);
printf("\n");
Edit(edit,editqty);
getchar();
}
break;
case 3:
if(head == NULL)
{
printf("Item list is empty!\n\n");
}
else{
printf("Input item name [1-100] : ");
getchar();
scanf("%[^\n]",remove);
struct node *temp = head;
while(temp!= NULL && strcmp(temp->barang,remove) != 0)
{
temp = temp->next;
}
if(temp == NULL)
{
printf("No item found!\n\n");
}
else
{
pop(remove);
printf("Remove succesful!\n\n");
}
}
break;
case 4:
checkout();
break;
case 5:
popall();
break;
default:
break;
}
}while(choose != 5 && choose != 4);
}
Dreammers Market
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node{
char barang[101];
int qty;
int value;
struct node *next, *prev;
}*head = NULL , *tail = NULL , *curr;
void push(const char *s , int x)
{
curr = (struct node*)malloc(sizeof(struct node));
strcpy(curr->barang,s);
curr->qty = x;
curr->value = rand()%11;
curr->next = curr->prev = NULL;
if(head == NULL)
{
head = tail = curr;
}
else if(x < head->qty || strcmp(s,head->barang) < 0)
{
curr->next = head;
head->prev = curr;
head = curr;
}
else if(x > tail->qty || strcmp(s,tail->barang) > 0)
{
tail->next = curr;
curr->prev = tail;
tail = curr;
}
else
{
struct node *temp = head;
while(temp->next->qty < x)
{
temp = temp->next;
}
curr->next = temp->next;
temp->next->prev = curr;
temp->next = curr;
curr->prev = temp;
}
}
void pop(const char *s)
{
if(head == NULL)
{
puts("Pop failed! No Data found!");
}
else if(head == tail)
{
free(head);
head = tail = NULL;
}
else if(strcmp(head->barang,s) == 0)
{
curr = head;
head = head->next;
free(curr);
head->prev = NULL;
}
else if(strcmp(tail->barang,s) == 0)
{
curr = tail;
tail = tail->prev;
free(curr);
tail->next =NULL;
}
else
{
curr = head;
while(curr != NULL && strcmp(curr->barang,s) != 0)
{
curr = curr->next;
}
if(curr == NULL)
{
printf("No item found!\n");
}
else
{
curr->next->prev = curr->prev;
curr->prev->next = curr->next;
free(curr);
printf("Remove successful!\n");
getchar();
}
}
}
void Edit(const char *s , int editqty)
{
struct node *temp = head;
while(temp != NULL && strcmp(temp->barang,s)!=0)
{
temp = temp->next;
}
if(temp != NULL)
{
temp->qty = editqty;
}
}
void popall()
{
while(head != NULL)
{
struct node *temp = head;
head = head->next;
free(temp);
}
}
void cetak()
{
int index = 1;
curr = head;
while(curr != NULL)
{
printf("%d. %s %d\n",index,curr->barang,curr->qty);
curr = curr->next;
index = index + 1;
}
printf("\n");
}
void checkout()
{
int i=1;
int x = 0;
cetak();
curr = head;
while(curr != NULL)
{
printf("%d. %s %d x %d = %d\n",i,curr->barang,curr->qty,curr->value,curr->qty*curr->value);
x += curr->qty * curr->value;
curr = curr->next;
i++;
}
printf("Total : %d\n",x);
printf("Kindness is free\n");
popall();
}
int main()
{
char item[101];
int qty;
char remove[101];
char edit[101];
int editqty;
int choose = 0;
do{
printf("1. Add item\n");
printf("2. Edit item\n");
printf("3. Remove item\n");
printf("4. Checkout\n");
printf("5. Exit\n");
printf("Please choose : ");
scanf("%d",&choose);
switch (choose) {
case 1:
printf("Input item name [1-100] : ");
getchar();
scanf("%[^\n]", item);
printf("Input qty [1-10] : ");
scanf("%d",&qty);
printf("\n");
push(item, qty);
getchar();
break;
case 2:
if(head == NULL)
{
printf("Item list is empty!\n\n");
}
else
{
printf("Input item you want to edit : ");
getchar();
scanf("%[^\n]",edit);
printf("Input qty you want to edit : ");
scanf("%d",&editqty);
printf("\n");
Edit(edit,editqty);
getchar();
}
break;
case 3:
if(head == NULL)
{
printf("Item list is empty!\n\n");
}
else{
printf("Input item name [1-100] : ");
getchar();
scanf("%[^\n]",remove);
struct node *temp = head;
while(temp!= NULL && strcmp(temp->barang,remove) != 0)
{
temp = temp->next;
}
if(temp == NULL)
{
printf("No item found!\n\n");
}
else
{
pop(remove);
printf("Remove succesful!\n\n");
}
}
break;
case 4:
checkout();
break;
case 5:
popall();
break;
default:
break;
}
}while(choose != 5 && choose != 4);
}
Komentar
Posting Komentar