Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

================= 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]);

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote