ให้ตัวเลขเป็นสตริงและฐาน ภารกิจคือตรวจสอบว่าจำนวนที่กำหนดเป็นฐานที่กำหนดหรือไม่
เราต้องตรวจสอบตัวเลขและฐานตามระบบตัวเลขที่มีฐานเช่น 2 สำหรับเลขฐานสอง, 8 สำหรับเลขฐานแปด, 10 สำหรับเลขฐานสิบและ 16 สำหรับเลขฐานสิบหก ตามนี้ เราต้องค้นหาว่าตัวเลขที่ระบุในสตริงนั้นเป็นของเบสตัวใดตัวหนึ่งหรือไม่ ถ้ามันเป็นของเบสตัวใดตัวหนึ่ง เราต้องพิมพ์คำว่า "ใช่" บนหน้าจอเอาต์พุต “ไม่” บนหน้าจอส่งออก
อย่างที่เราทราบ ตัวเลข/นิพจน์ “1A6” เป็นของฐาน 16 และ “1010” เป็นฐาน 2 แต่สิ่งนี้สามารถตัดสินได้โดยการวิเคราะห์ด้วยสายตา ตอนนี้เราต้องหาวิธีแก้ปัญหาด้วยความช่วยเหลือจาก โปรแกรม
ตัวอย่าง
Input: str = “1010”, base =2 Output: yes Input: str = “1AA4”, base = 16 Output: yes Input: str = “1610”, base = 2 Output: No
แนวทางที่เราจะใช้ในการแก้ปัญหาที่กำหนด −
- ตรวจสอบว่าฐานอยู่ระหว่าง 2 ถึง 16
- จากนั้นจะตรวจสอบแต่ละหลักของสตริกที่เป็นฐานเฉพาะหรือไม่
- ถ้ามันเป็นของก็คืนค่าจริง อย่างอื่นเป็นเท็จ
อัลกอริทึม
Start Step 1 -> In function bool isInGivenBase(char str[], int base) If base > 16 then, Return false Else If base <= 10 then, Loop For i = 0 and i < strlen(str) and i++ If !(str[i] >= '0' and str[i] < ('0' + base)) then, Return false Else Loop For i = 0 and i < strlen(str) and i++ If NOT ((str[i] >= '0' && str[i] < ('0' + base)) || (str[i] >= 'A' && str[i] < ('A' + base – 10) ) then, Return false Return true Step 2 -> In function int main() Set str[] = {"AF87"} If isInGivenBase(str, 16) then, Print "yes " Else Print "No " Stop
ตัวอย่าง
#include <ctype.h> #include <stdio.h> #include <string.h> bool isInGivenBase(char str[], int base) { // Allowed bases are till 16 (Hexadecimal) if (base > 16) return false; // If base is below or equal to 10, then all // digits should be from 0 to 9. else if (base <= 10) { for (int i = 0; i < strlen(str); i++) if (!(str[i] >= '0' and str[i] < ('0' + base))) return false; } // If base is below or equal to 16, then all // digits should be from 0 to 9 or from 'A' else { for (int i = 0; i < strlen(str); i++) if (! ((str[i] >= '0' && str[i] < ('0' + base)) || (str[i] >= 'A' && str[i] < ('A' + base - 10)) )) return false; } return true; } // Driver code int main() { char str[] = {"AF87"}; if (isInGivenBase(str, 16)) printf("yes\n"); else printf("No\n"); return 0; }
ผลลัพธ์
yes