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

C 숫자가 특정 염기에 속하는지 여부를 확인하는 프로그램

<시간/>

숫자가 문자열과 밑수로 주어집니다. 주어진 숫자가 주어진 밑수인지 아닌지를 확인하는 작업입니다.

2진수는 2, 8진수는 8, 10진수는 10, 16진수는 16과 같이 밑수가 있는 숫자 체계에 따라 숫자와 밑수를 확인해야 합니다. 이에 따르면 문자열의 주어진 숫자가 특정 염기에 속하는지 여부를 찾아야 합니다. 특정 염기에 속하는 경우 출력 화면에 "예"를 인쇄해야 합니다. 그렇지 않으면 출력 화면에 "아니오"가 표시됩니다.

우리가 알고 있듯이 숫자/표현식 "1A6"은 16진법이고 "1010"은 2진법이지만 이것은 시각적 분석으로 판단할 수 있습니다. 이제 우리는 문제를 해결할 방법을 찾아야 합니다. 프로그램.

예시

입력:str =“1010”, base =2Output:yesInput:str =“1AA4”, base =16Output:yesInput:str =“1610”, base =2Output:No

주어진 문제를 해결하기 위해 사용할 접근 방식 -

  • 기저가 2에서 16 사이인지 확인합니다.
  • 그런 다음 strig의 각 숫자가 특정 염기에 속하는지 여부를 확인합니다.
  • 다음에 속하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

알고리즘

StartStep 1 -> In function bool isInGivenBase(char str[], int base) If base> 16 then, false 반환 Else base <=10 then, Loop For i =0 and i ='0' 및 str[i] <('0' + base))이면 false 반환 Else 루프 For i =0 및 i ='0' &&str[i] <('0' + 밑수)) || (str[i]>='A' &&str[i] <('A' + 밑수 – 10) ) then, false 반환 true 반환 Step 2 -> In function int main() Set str[] ={"AF87"} isInGivenBase(str, 16) then, Print "yes" Else Print "No "Stop

예시

#include #include #include bool isInGivenBase(char str[], int base) { // 허용되는 기수는 16까지(16진수) if (base> 16) 거짓을 반환합니다. // 밑이 10보다 작거나 같으면 // 모든 숫자는 0에서 9 사이여야 합니다. else if (base <=10) { for (int i =0; i ='0' 및 str[i] <('0' + base))) false를 반환합니다. } // 밑이 16보다 작거나 같으면 // 모든 숫자는 0에서 9 또는 'A'부터여야 합니다. else { for (int i =0; i ='0' &&str[i] <('0' + 밑수)) || (str[i]>='A' &&str[i] <('A' + 밑수 - 10 )) )) 거짓을 반환합니다. } return true;}// 드라이버 codeint main() { char str[] ={"AF87"}; if (isInGivenBase(str, 16)) printf("예\n"); else printf("아니요\n"); 반환 0;}

출력

<예>예