Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

ISBN을 확인하는 C++ 프로그램

<시간/>

시퀀스와 함께 주어진 작업은 주어진 시퀀스가 ​​ISBN 번호인지 여부를 식별하는 것입니다.

ISBN 번호란 무엇입니까

ISBN은 International Standard Book Number의 약자로 2006년 12월까지의 10자리 숫자이며 2007년 1월 1일부터 13자리 숫자로 수정되었습니다. 아래는 10자리 ISBN의 구현입니다.

ISBN 숫자에는 -

와 같은 패턴이 있습니다.
  • 숫자의 시작 9자리는 책의 제목, 출판사, 그룹을 나타냅니다. 처음 9자리 값의 범위는 0 - 9입니다.
  • 마지막 1자리는 ISBN이 올바른지 여부를 확인합니다. 마지막 숫자는 값을 10으로 지정할 수 있으며 'X' 기호를 사용하여 이 숫자를 나타냅니다.

주어진 10자리 숫자가 ISBN 번호인지 여부를 확인하는 방법은 무엇입니까?

  • 시퀀스의 첫 번째 숫자부터 시작하여 ISBN이 10자리 숫자이므로 10을 곱합니다.
  • 승수 값을 1로 줄여 다음 숫자로 계속 이동
  • 곱한 결과 모두 더하기
  • 결과를 11로 나누기
  • ISBN 번호 확인을 위한 조건 적용
    • 결과가 11로 나눌 수 있는 경우 나머지가 남지 않거나 0이 숫자보다 나머지를 의미하는 경우 ISBN 번호입니다.
    • 결과가 11로 나눌 수 없는 경우 숫자가 ISBN 번호가 아닌 나머지로 일부 나머지가 남거나 0이 아닌 경우

Input-: 002442142X
Output-: Not ISBN
Input-: 007462542X
Output-: it’s ISBN

알고리즘

Start
Step 1-> declare function to check for ISBN
   bool isvalid(string &isbn_number)
      set int n = isbn_number.length()
         IF (n != 10)
            return false
         End
         Set int sum = 0
         Loop For int i = 0 and i < 9 and i++
            Set int value = isbn_number[i] - '0'
            If (0 > value || 9 < value)
               return false
            End
            Set sum += (value * (10 - i))
         End
         Set char last_val = isbn_number[9]
         IF (last_val != 'X' && (last_val < '0' || last_val > '9'))
            return false
         End
         Set sum += ((last_val == 'X') ? 10 : (last_val - '0'))
         return (sum % 11 == 0)
step 2-> In main()
   set string isbn_number = "002442142X"
   IF (isvalid(isbn_number))
      Print " is Valid"
   End
   Else
      Print " is invalid
   End
Stop

예시

#include <bits/stdc++.h>
using namespace std;
//check whether its a valid ISBN or not
bool isvalid(string &isbn_number) {
   int n = isbn_number.length();
   if (n != 10)
      return false;
   int sum = 0;
   for (int i = 0; i < 9; i++) {
      int value = isbn_number[i] - '0';
      if (0 > value || 9 < value)
         return false;
      sum += (value * (10 - i));
   }
   char last_val = isbn_number[9];
   if (last_val != 'X' && (last_val < '0' || last_val > '9'))
      return false;
   sum += ((last_val == 'X') ? 10 : (last_val - '0'));
   return (sum % 11 == 0);
}
int main() {
   string isbn_number = "002442142X";
   if (isvalid(isbn_number))
      cout<<isbn_number<<" is Valid";
   else
      cout<<isbn_number<<" is invalid";
   return 0;
}

출력

위의 코드를 실행하면 다음 출력이 생성됩니다.

002442142X is invalid