Solved

# I'm complete lost with this assingment!!!!

Posted on 2006-03-20
142 Views
This is my homework programming class c++ intermedia:
i need to write a program that will check the validity of an account number that has been sent to the bank as part of its daily transactions, so the account number willbe nine digits long and the ningth digit (rightmost) can be calculated by either adding, subtracting, or multiplying all of the preceding digits and finding the rigthmost digit of the result. if the two rigthmost digits match, the account number is valid. In the operation code (first digit), 1 is addition, 2 is subtraction, and 3 is multiplication. any other digit in this position is incorrect.
0
Question by:jaimvatr

LVL 12

Expert Comment

Post some code.
0

LVL 43

Expert Comment

First - this is homework, so the experts here are *forbidden* to do it for you.

I'm puzzled by your question as the details you give are the answer you want.
You have the nine digit number.
First digit.   1 is addition, 2 is subtraction, and 3 is multiplication. any other digit in this position is incorrect.  (You now have a valid or invalid number)
Now you know what you need to do to get the total (add, subtract, multiply).
You now have the total - is the right most digit the same as the rightmost in the code.  So you know if the code is valid or not.
0

LVL 43

Accepted Solution

Don't forget when str="149" that str[0] = '1', str[1] = '4', str[2] = '9' and also that character '4' -  character '0' is the number 4
0

Author Comment

this is the code that I did it , but my professor don't like it. he said is poor logic and code!!!! somebody can help me

#include <iostream>
#include <string>
#include <iomanip>

#include <cctype> // for isdigit

using namespace std;

int main()
{
int i; // auxiliar variable to check digit by digit
int j; // stop to show results
int baddata; // flag to identify if account is valid or invalid
int totalsum; // total sum if operation is sum or substraction
int totalmul; // total if operation is multiplication
int totalcontrol; // variable used to truncate the total of control
int finaltotal; // auxiliar variable to check the validity of the check// digit
string accountno; // account number
string message; // returned message
cout << "Enter Account No" << '\n';
cin >> accountno;
message = "*** VALID ACCOUNT No ***";
i=0;
totalsum = 0;
totalmul = 1;
totalcontrol = 0;
finaltotal = 0;
// check length of the account number
if (accountno.length() != 9 )
{
message = "*** INVALID ACCOUNT No. ***";
}
// check operation code
{
if (accountno[0]=='1' || accountno[0]=='2' || accountno[0]=='3')
else
{
message = "***OPERATION CODE ERROR***";
}
}
// check digit by digit and calculate total sum or total multiplication
i = 0;
{
do
{
if (isdigit(accountno[i])==0)
{
message = "*** INVALID ACCOUNT No.***";
i = 10;
}
else
{
if (accountno[0]=='3')
totalmul = totalmul * (accountno[i]-'0');
else
totalsum = totalsum + (accountno[i]-'0');
}
i = i + 1;
}while (i < 8);
}
// truncate the total sum or total multiplication to be able to validate the control digit
{
if (totalsum > 0)
totalcontrol = totalsum /10;
else
totalcontrol = totalmul /10;

}

finaltotal = (totalcontrol * 10) + (accountno[8]-'0');
{
if (finaltotal == totalmul || finaltotal == totalsum)
else
message = "*** INVALID ACCOUNT CONTROL DIGIT ***";
}
cout << "Account No" << '\t' << accountno << '\t' << message << '\n';

return 0;
}
0

LVL 12

Expert Comment

Post some valid and invalid account numbers as an example.
0

LVL 43

Expert Comment

use functions for example, rather than one big function.

if(NUMBER_FAILS_CHECK)
{
PrintMessage("FAILED BECAUSE OF..");
return 0;
}
0

LVL 43

Expert Comment

You only require one totals variable.  Why do you need a separate one for multiplication?
0

LVL 43

Expert Comment

I think my comments helped in solving the original question and I provided relevant comment to improve the code in response to the subsequent question.
0

## Featured Post

### Suggested Solutions

The following diagram presents a diamond class hierarchy: As depicted, diamond inheritance denotes when two classes (e.g., CDerived1 and CDerived2), separately extending a common base class (e.g., CBase), are sub classed simultaneously by a fourt…
In Easy String Encryption Using CryptoAPI in C++ (http://www.experts-exchange.com/viewArticle.jsp?aid=1193) I described how to encrypt text and recommended that the encrypted text be stored as a series of hexadecimal digits -- because cyphertext may…
how to add IIS SMTP to handle application/Scanner relays into office 365.
This video is in connection to the article "The case of a missing mobile phone (https://www.experts-exchange.com/articles/28474/The-Case-of-a-Missing-Mobile-Phone.html)". It will help one to understand clearly the steps to track a lost android phone.