149k views
2 votes
Retail products are identified by their Universal Product Codes (UPCs). The most commonform of a UPC has 12 decimal digits: The first digit identifies the product category, the nextfive digits identify the manufacturer, the following five identify the particular product, andthe last digit is acheck digit. The check digit is determined in the following way:

• Beginning with the first digit multiply every second digit by 3.
• Sum all the multiplied digits and the rest of the digits except the last digit.
• If the (10 - sum % 10) is equal to the last digit, then the product code is valid.
• Otherwise it is not a valid UPC.The expression is:sum= 3.x1+x2+ 3.x3+x4+ 3.x5+x6+ 3.x7+x8+ 3.x9+x10+ 3.x11where the x’s are the first 11 digits of the code.
If you choose to add the last digit also in the second step and if the sum is a multiple of 10,then the UPC is valid. Either way, you still need to perform the modular division to checkwhether the given number is a valid code.In this problem, you need to use either a string or long long integer type for the product codebecause it is 12 digits long. If you use string, you can convert one character substring of thestring in to a single digit integer from left to right using the function stoi(str.substr(i,1)).This way you do not need to get last digit of the number and then divide the number by 10.
in c++
problem 3
Translate the following pseudocode for randomly permuting the characters in a string into a C++ program. Read a word. repeat word.length() times Pick a random position i in the word, but not the last position. Pick a random position j > i in the word. swap the letters at positions j and i. Print the word. Please work on this problem after we learn to generate random numbers in the class which is on Wednesday the latest. These problems only deal with simple loop while, for and do loops. You will get a second set of problems next week on nested loops.

User Ken Yao
by
5.6k points

1 Answer

3 votes

Answer:

#include <iostream>

#include <cmath>

using namespace std;

int main(){

string upc;

char last;

cout<< "Enter UPC number: ";

cin >> upc;

if (upc.size() == 12){

last = upc[-1];

} else{

return 0;

}

cout<< last;

char myArr[upc.length()];

for (int i = 0 ; i < upc.substr(0,11).length(); ++i){

if (upc[i]%2 != 0){

myArr[i] = upc[i] * 3;

}

else{

myArr[i] = upc[i];

}

}

int sum = 0;

for (int x = 0; x < sizeof(myArr); ++x){

sum += (int)myArr[x] - '0';

}

if (sum% 10 == last){

cout<<"UPC number is valid";

}

else{

cout<<"Invalid UPC number.";

}

}

Step-by-step explanation:

The UPC number in the c++ source code input must be 12 digits long for the rest of the code to execute. The code checks the validity of the number by comparing the reminder of the sum division with the last digit in the UPC number.

User Roberto Flores
by
5.2k points