================= C programing problem. Though long, most part are just introduc
ID: 3703368 • Letter: #
Question
=================
C programing problem. Though long, most part are just introductive steps.
READ CAREFULLY AND FULL ANSWERS ONLY will get positive rate. Thank you .
Problenm Write a program to validate UPC codes are being read correctly by the scanner. Your program should begin with the following prompt UPC VERIFICATION PROGRAM WRITTEN IN C Program written by Sally Coder. Program compiled on Feb 12, 2018 at 17:38:01. Enter a UPC code to look up: Read in the UPC code and validate it, as described below under TASKS, and print out what the numbers represent.Explanation / Answer
upc.c:
#include <stdio.h>
#include <stdlib.h>
#include <upc.h>
void readInUPCbarcode(int barcode_array[]){
int i;
for(i=0;i<12;i++){
barcode_array[i] = getchar();
}
}
int foundDigitsOnly(int barcode_array[]){
int i;
for(i=0;i<12;i++){
if(barcode_array[i]>'9' || barcode_array[i]<'0'){
return FALSE;
}
}
}
void calculateUPCcheckDigit(int barcode_array[],int *check_digit){
int i;
int sum=0;
int dg;
for(i=0;i<11;i++){
dg = barcode_array[i]-'0';//use numbers instead of chars
printf("sum = %d add %d ",sum,(i%2?1:3)*dg);
sum+=(i%2?1:3)*dg;//multiply 3 if odd pos else add 1
}
sum = sum%10;
printf("unit place=%d ",sum);
*check_digit = sum;
}
int validateBarCode(int barcode_array[], int check_digit){
return (barcode_array[11] - '0')==check_digit?TRUE:FALSE;
}
void printDesignation(int barcode_array[]){
int dg = barcode_array[0] - '0';
switch(dg){
case 0:
case 1:
case 6:
case 7:
printf("%s ",RETAIL);
break;
case 2:
printf("%s ",WEIGHT);
break;
case 5:
case 9:
printf("%s ",COUPONS);
break;
case 4:
printf("%s ",RESERVED);
break;
}
}
char* getAudioVideoProductString(int barcode_array[]){
int i;
char *prod = (char*)malloc(sizeof(char)*6);
for(i=0;i<5;i++){
prod[i] = barcode_array[i+6];
}
prod[i] = '';
return prod;
}
int main(){
int barcode[12];
int ch;
printf("UPC VERIFICATION PROGRAM WRITTEN IN C ");
printf(" Program written by Sally Coder. ");
printf("Program compiled on Feb 12, 2018 at 17:38:01 ");
printf(" Enter a UPC code to look up:");
readInUPCbarcode(barcode);
if(!foundDigitsOnly(barcode)){
printf("enter only digits ");
exit(1);
}
calculateUPCcheckDigit(barcode,&ch);
if(validateBarCode(barcode,ch))
printf(MESSAGE_SUCCESSFUL_VALIDATION);
else
printf(MESSAGE_VALIDATION_FAILURE);
printDesignation(barcode);
printf("%s is the product code ",getAudioVideoProductString(barcode));
return 0;
}
upc.h:
#define FALSE 0
#define TRUE 1
#define RETAIL "retail"
#define WEIGHT "weight based pricing product"
#define COUPONS "coupons"
#define RESERVED "reserved"
#define MESSAGE_SUCCESSFUL_VALIDATION "Validation successful! "
#define MESSAGE_VALIDATION_FAILURE "Validation failed! "
void readInUPCbarcode(int barcode_array[12]);
int foundDigitsOnly(int barcode_array[12]);
void calculateUPCcheckDigit(int barcode_array[12],int *check_digit);
int validateBarCode(int barcode_array[12], int check_digit);
void printDesignation(int barcode_array[12]);
char* getAudioVideoProductString(int barcode_array[12]);
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.