Answer To: ITECH5403 – Comparative Programming Languages School of Science, Engineering and Information...
Snehil answered on Sep 21 2020
My Work/C/Parallel implementation Pizza 33284/bin/Debug/Parallel implementation Pizza 33284.exe
My Work/C/Parallel implementation Pizza 33284/obj/Debug/pizza.o
My Work/C/Parallel implementation Pizza 33284/Parallel implementation Pizza 33284.cbp
My Work/C/Parallel implementation Pizza 33284/Parallel implementation Pizza 33284.depend
# depslib dependency file v1.0
1537340191 source:c:\programming\tfth\33284\my work\c\parallel implementation pizza 33284\pizza.c
My Work/C/Parallel implementation Pizza 33284/Parallel implementation Pizza 33284.layout
My Work/C/Parallel implementation Pizza 33284/pizza.c
#include
#include
#include
#include
#define MAX_PIZZA 10
#define MAX_ORDERS 10
struct pizza
{
char size[10];
char toppings[4][20];
int num_toppings;
float cost;
};
typedef struct pizza pizza;
struct order
{
pizza pizzas[MAX_PIZZA];
int num_pizzas;
char name[50];
char phone_number[20];
char address[100];
int to_be_delivered;
float cost;
};
typedef struct order order;
void print_summary(order o);
void process_order(order o[], int num_orders);
float add_pizza(pizza *arg_p);
int isempty(const char *s);
int main()
{
order o[MAX_ORDERS];
int i, num_orders=0, choice=-1;
while(1)
{
printf("Options\n1. Order pizza\n2. View all orders\n3. Exit\nEnter your choice : ");
scanf("%d",&choice);
while ((getchar()) != '\n');
switch(choice)
{
case 1:
if(num_orders==MAX_ORDERS)
{
printf("\nMaximum orders received.\n");
}
else
{
process_order(o,num_orders);
num_orders++;
}
break;
case 2:
if(num_orders==0)
{
printf(("\nNo orders received yet.\n"));
}
else
{
for(i=0;i {
print_summary(o[i]);
}
}
break;
case 3:
exit(0);
default:
printf("Invalid choice, try again.\n\n");
}
}
}
void process_order(order o[], int num_orders)
{
int choice=-1;
char c='a';
do
{
printf("Enter your name : ");
scanf("%[^\n]49s", o[num_orders].name);
while ((getchar()) != '\n');
}while(isempty(o[num_orders].name));
do
{
printf("Enter your phone number : ");
scanf("%[^\n]19s",o[num_orders].phone_number);
while ((getchar()) != '\n');
}while(isempty(o[num_orders].phone_number));
while(!(c=='c'||c=='C'||c=='d'||c=='D'))
{
printf("Will the pizza be [c]ollected or [d]elivered: ");
scanf("%c",&c);
while ((getchar()) != '\n');
}
o[num_orders].to_be_delivered=0;
if(c=='d'||c=='D')
{
do
{
printf("Enter your address : ");
scanf("%[^\n]99s",o[num_orders].address);
while ((getchar()) != '\n');
}while(isempty(o[num_orders].address));
o[num_orders].to_be_delivered=1;
}
o[num_orders].num_pizzas=0;
do
{
printf("\nOptions\n1. Add pizza\n2. Checkout\nEnter your choice : ");
scanf("%d",&choice);
while ((getchar()) != '\n');
switch(choice)
{
case 1:
if(o[num_orders].num_pizzas >= MAX_PIZZA)
{
printf("\nMaximum pizzas ordered\n");
}
else
{
o[num_orders].cost += add_pizza(&(o[num_orders].pizzas[o[num_orders].num_pizzas]));
o[num_orders].num_pizzas++;
printf("Total current order cost : $%.2f\n\n",o[num_orders].cost);
}
break;
case 2:
if(o[num_orders].num_pizzas==0)
{
printf("\nOrder at least 1 pizza before checking out.\n");
choice=-1;
}
break;
default:
printf("Invalid choice. try again\n\n");
}
}while(choice!=2);
printf("\nCost of order : $%.2f\n",o[num_orders].cost);
if(o[num_orders].to_be_delivered && o[num_orders].cost<30)
{
printf("Cost of Delivery : $%.2f\n",8.0);
printf("Total cost of Order : $%.2f\n\n",o[num_orders].cost+8.0);
}
else
{
printf("Cost of Delivery : $%.2f\n",0.0);
printf("Total cost of Order : $%.2f\n\n",o[num_orders].cost);
}
}
float add_pizza(pizza *arg_p)
{
char toppings[][20] = {"Bacon", "Olives", "Ham", "Mushrooms", "Pineapple", "Salami", "Anchovies"};
char pizza_sizes[][10]={"small", "medium", "large"};
float pizza_size_cost[]={5,8,12};
float cost_of_pizza = 0;
int choice=-1,i;
pizza p;
p.num_toppings = 0;
while(1)
{
printf("\nEnter pizza size\n1. Small\n2. Medium\n3. Large\nEnter your choice : ");
scanf("%d",&choice);
while ((getchar()) != '\n');
if(choice>=1 && choice<=3)
{
strcpy(p.size,pizza_sizes[choice-1]);
cost_of_pizza += pizza_size_cost[choice-1];
break;
}
else
{
printf("Invalid choice. try again\n\n");
}
}
choice=-1;
while(p.num_toppings<4)
{
printf("Add topping\n");
for(i=0;i<7;i++)
{
printf("%d. %s\n",i+1,toppings[i]);
}
printf("8. Close topping selection\nEnter your choice : ");
scanf("%d",&choice);
while ((getchar()) != '\n');
if(choice>=1 && choice<=7)
{
strcpy(p.toppings[p.num_toppings],toppings[choice-1]);
printf("\n%s added to pizza.\n\n",toppings[choice-1]);
p.num_toppings++;
}
else if(choice==8)
{
break;
}
else
{
printf("Invalid choice. try again\n\n");
}
}
if(p.num_toppings==4)
{
printf("\nMaximum toppings selected");
}
cost_of_pizza+=p.num_toppings;
p.cost = cost_of_pizza;
*arg_p=p;
printf("Cost of pizza : $%.2f\n",cost_of_pizza);
return cost_of_pizza;
}
void print_summary(order o)
{
int i,j;
printf("----------------------------------------------------------------\n");
printf("Customer Name: %s\n",o.name);
printf("Customer Phone Number: %s\n",o.phone_number);
if(o.to_be_delivered)
{
printf("Customer Address: %s\n",o.address);
}
for(i=0;i {
printf("\nPizza %d:\n",i+1);
printf("Size: %s\n",o.pizzas[i].size);
if(o.pizzas[i].num_toppings>0)
{
printf("Toppings:\n");
for(j=0;j {
printf("%d: %s\n",j+1,o.pizzas[i].toppings[j]);
}
}
printf("Cost: $%.2f\n",o.pizzas[i].cost);
}
printf("\nCost of order : $%.2f\n",o.cost);
if(o.to_be_delivered && o.cost<30)
{
printf("Cost of Delivery : $%.2f\n",8.0);
printf("Total cost of Order : $%.2f\n",o.cost+8.0);
}
else
{
printf("Cost of Delivery : $%.2f\n",0.0);
printf("Total cost of Order : $%.2f\n",o.cost);
}
printf("----------------------------------------------------------------\n");
}
int isempty(const char *s)
{
while(*s)
{
if(!isspace(*s))
return 0;
s++;
}
return 1;
}
My Work/Java/Parallel Implementaion Pizza 33284/.classpath
My Work/Java/Parallel Implementaion Pizza 33284/.project
Parallel Implementaion Pizza 33284
org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature
My Work/Java/Parallel Implementaion Pizza 33284/.settings/org.eclipse.jdt.core.prefs
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
My Work/Java/Parallel Implementaion Pizza 33284/bin/Order.class
public synchronized class Order {
private java.util.ArrayList pizzas;
private String customerName;
private String customerPhone;
private String customerAddress;
private boolean isOrderToBeDelivered;
private float cost;
public void Order();
public void SetName(String);
public void SetPhoneNumber(String);
public void SetAddress(String);
public boolean isOrderToBeDelivered();
public int getNumPizzaOrdered();
public float getCost();
public void addToCost(float);
public void setOrderToBeDelivered(boolean);
public void AddPizza(Pizza);
public void PrintDetails();
}
My Work/Java/Parallel Implementaion Pizza 33284/bin/Pizza.class
public synchronized class Pizza {
private String size;
private java.util.ArrayList toppings;
private float cost;
public void Pizza();
public void SetSize(String);
public void AddTopping(String);
public int GetNumToppings();
public void PrintDetails();
public void SetCost(float);
public float GetCost();
}
My Work/Java/Parallel Implementaion Pizza 33284/bin/PizzaShop.class
public synchronized class PizzaShop {
private java.util.ArrayList orders;
private java.util.Scanner scanner;
public void PizzaShop();
Order ProcessOrder();
Pizza AddPizza();
public static void main(String[]);
}
My Work/Java/Parallel Implementaion Pizza 33284/src/Order.java
My Work/Java/Parallel Implementaion Pizza...