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

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.
jaimvatrAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

rajeev_devinCommented:
Post some code.
0
AndyAinscowFreelance programmer / ConsultantCommented:
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
AndyAinscowFreelance programmer / ConsultantCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

jaimvatrAuthor Commented:
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;
      baddata = 0;
      totalsum = 0;
      totalmul = 1;
      totalcontrol = 0;
      finaltotal = 0;
      // check length of the account number
      if (accountno.length() != 9 )
      {
            message = "*** INVALID ACCOUNT No. ***";
            baddata = 1;
      }
      // check operation code
      if (baddata == 0)
      {
            if (accountno[0]=='1' || accountno[0]=='2' || accountno[0]=='3')
                  baddata = 0;
            else
            {
                  baddata = 1;
                  message = "***OPERATION CODE ERROR***";
            }
      }
      // check digit by digit and calculate total sum or total multiplication
      i = 0;
      if (baddata == 0)
      {
            do
            {
                  if (isdigit(accountno[i])==0)
                  {
                        message = "*** INVALID ACCOUNT No.***";
                        baddata = 1;
                        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 (baddata == 0)
      {
            if (totalsum > 0)
            totalcontrol = totalsum /10;
            else
                  totalcontrol = totalmul /10;
            
      }
      
      finaltotal = (totalcontrol * 10) + (accountno[8]-'0');
      if (baddata == 0)
      {
            if (finaltotal == totalmul || finaltotal == totalsum)
                  baddata = 0;
            else
                  message = "*** INVALID ACCOUNT CONTROL DIGIT ***";
      }
      cout << "Account No" << '\t' << accountno << '\t' << message << '\n';
      
      return 0;
}
0
rajeev_devinCommented:
Post some valid and invalid account numbers as an example.
0
AndyAinscowFreelance programmer / ConsultantCommented:
use functions for example, rather than one big function.

if(NUMBER_FAILS_CHECK)
{
  PrintMessage("FAILED BECAUSE OF..");
  return 0;
}
0
AndyAinscowFreelance programmer / ConsultantCommented:
You only require one totals variable.  Why do you need a separate one for multiplication?
0
AndyAinscowFreelance programmer / ConsultantCommented:
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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual C++.NET

From novice to tech pro — start learning today.