Hi guys,
Ok so I need to use pointer syntax for the functions init-costs(), show-costs() and toUpper() in the following code. I'm still working on the first two, but I'm curious as to what needs to be done to the toUpper() function. I'm pretty sure I've already done the pointer syntax correctly, right? Here is the code:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
/* ================================================================== */
// ** Prototypes **
void heading(void);
int menu();
int add();
void getstring(char entry[], char prompt[]);
int getint(int min, int max, char prompt[]);
double getreal(double min, double max, char prompt[]);
double total(double quantity, double amount);
double profit(double profit_cost, double profit_price);
void init_costs(double t[], int x);
void show_costs(double t[], int x);
void show(int prodnum, int prodtype, char d[], int prodquan, double cost, double price, double prod_price, double prod_cost, double prod_profit);
int menuerror(int min, int max, char prompt[]);
int prompt(char msg[]);
int quit(void);
void message(char msg[]);
void firstUpper(char *buf);
// ** Functions **
int main()
{
int TRUE = 1;
int FALSE = 0;
int select, end = TRUE;
do
{
select = menu();
switch (select)
{
case 1: add(); break;
case 2:
case 3:
case 4:
case 5: end = quit(); break;
default: message("\n\nPlease make a selection between 1 and 5.\a");
}
}
while (end);
return 0;
}
/* ================================================================ */
int menu()
{
int choice;
system("cls");
printf("Sierra Sporting Goods\n\n");
printf("1 = Add a record\n");
printf("2 = Report\n");
printf("3 = Delete a record\n");
printf("4 = Change a record\n");
printf("5 = Quit\n\n");
choice = menuerror(1, 5, "Enter your selection");
return(choice);
}
/* ================================================================ */
void heading()
{
system("cls");
printf("Sierra Sporting Goods\n\n\n");
return;
}
/* ================================================================ */
int add()
{
double cost, price, prod_cost, prod_price, prod_profit;
double MINCOST = 5.00;
double MAXCOST = 900.00;
double MINPRICE = 6.00;
double MAXPRICE = 1000.00;
int prodnum, prodtype, prodquan;
int MINPROD = 1;
int MAXPROD = 9999;
int MINTYPE = 1;
int MAXTYPE = 5;
int MINQUAN = 1;
int MAXQUAN = 50;
char prodscrip[40];
double types[6];
char choice;
init_costs(types,6);
do
{
heading();
prodnum = getint(MINPROD, MAXPROD, "product number");
prodtype = getint(MINTYPE, MAXTYPE, "product type");
printf("Enter the product description: ");
gets(prodscrip);
firstUpper(prodscrip);
prodquan = getint(MINQUAN, MAXQUAN, "product quantity");
cost = getreal(MINCOST, MAXCOST, "product cost");
price = getreal(MINPRICE, MAXPRICE, "product price");
prod_cost = total(prodquan, cost);
prod_price = total(prodquan, price);
prod_profit = profit(prod_price, prod_cost);
types[prodtype] += prod_cost;
show(prodnum, prodtype, prodscrip, prodquan, cost, price, prod_price, prod_cost, prod_profit);
choice = prompt("Would you like to enter another product");
}
while (choice != 'N');
getchar();
show_costs(types,6);
return 0;
}
/* ================================================================ */
void firstUpper(char *buf)
{
*buf=toupper(*buf); // first char CAP
while (*buf++ != '\0')
if (*buf == ' ') // look for space
*buf=toupper(*++buf); // CAP next char
}
/* ================================================================ */
int getint(int min, int max, char item[])
{
int x;
printf("Enter the %s between %d and %d: ", item, min, max);
scanf("%d%*c", &x);
while (x < min || x > max)
{
message("\nError in range. Press Enter to continue.\a");
printf("Enter the %s between %d and %d: ", item, min, max);
scanf("%d%*c", &x);
}
return(x);
}
/* ================================================================ */
double getreal(double min, double max, char item[])
{
double y;
printf("Enter the %s between $%.2lf and $%.2lf: ", item, min, max);
scanf("%lf%*c", &y);
while (y < min || y > max)
{
message("\nError in range. Press Enter to continue.\a");
printf("Enter the %s between $%.2lf and $%.2lf: ", item, min, max);
scanf("%lf%*c", &y);
}
return(y);
}
/* ================================================================ */
double total(double quantity, double amount)
{
return (quantity * amount);
}
/* ================================================================ */
double profit(double profit_price, double profit_cost)
{
return (profit_price - profit_cost);
}
/* ================================================================ */
void init_costs(double t[], int x)
{
int z;
for (z = 1; z < x; z++)
t[z] = 0;
}
/* ================================================================ */
void show_costs(double t[], int x)
{
int z;
double total = 0;
system("cls");
printf(" Product Cost by Type\n\n");
printf("_Type_____________Cost_\n\n");
for (z = 1; z < x; z++)
{
printf(" %2d%20.2lf\n", z, t[z]);
total += t[z];
}
printf("________________________\n");
printf("%23.2lf\n\n\n\n", total);
printf("Press ENTER to return to the Main Menu...");
getchar();
}
/* ================================================================ */
void message(char msg[])
{
printf("%s\n\n", msg);
}
/* ================================================================ */
int prompt(char msg[])
{
int z;
do
{
printf("%s (Y/N)? ", msg);
z = toupper(getchar());
if (z != 'Y' && z != 'N') printf("\nError, please enter Y or N only.\n");
}
while (z != 'Y' && z != 'N');
return(z);
}
/* ================================================================ */
int quit()
{
int TRUE = 1;
int FALSE = 0;
int z, end = TRUE;
z = prompt("\nEnd program\a");
if (z == 'Y')
{
system("cls");
message("\nSierra Sporting Goods Database closed successfully.");
end = FALSE;
}
return(end);
}
/* ================================================================ */
int menuerror(int min, int max, char item[])
{
int z;
printf("%s from %d to %d: ", item, min, max);
scanf("%d%*c", &z);
while (z < min || z > max)
{
message("\nError in range. Press Enter to continue.\a");
printf("%s from %d to %d: ", item, min, max);
scanf("%d%*c", &z);
}
return(z);
}
/* ================================================================ */
void show(int prodnum, int prodtype, char prodscrip[], int prodquan, double cost, double price,
double prod_price, double prod_cost, double prod_profit)
{
printf("\n\n\nThe product number is ----------> %04d\n", prodnum);
printf("The product type is ------------> %d\n", prodtype);
printf("The product description is -----> %s\n", prodscrip);
printf("The quantity is ----------------> %d\n", prodquan);
printf("The cost is --------------------> $%.2lf\n", cost);
printf("The price is -------------------> $%.2lf\n\n", price);
printf("Total product price ----------> $%.2lf\n", prod_price);
printf("Total product cost -----------> $%.2lf\n", prod_cost);
printf("Total product profit ---------> $%.2lf\n\n\n\n", prod_profit);
return;
}
/* ================================================================ */