Hướng dẫn how to compare digits of a number in c++ - cách so sánh các chữ số của một số trong c ++

Tôi đang làm ví dụ đơn giản về trò chơi nhỏ về những con số đoán.

Và tôi muốn xây dựng một hàm kiểm tra các số và tạo hai giá trị như sau:

1) HITS-Số chữ số chứa cả số và ở cùng một vị trí cho cả hai số.

2) Misses-Số lượng các chữ số chứa cả hai số nhưng không ở cùng một nơi.

Ví dụ:

int systemNumber=1653;
int userGuess=5243;

Trong ví dụ này, trong cả hai số có các chữ số 5 và 3. Trong cả hai số chữ số 3 ở cùng một nơi. Nhưng, chữ số 5 trong systemNumber không ở cùng một nơi với userNumber. Vì vậy, chúng tôi có ở đây 1 hit và 1 lần bỏ lỡ.

Tôi đã viết mã cho nó với các mảng và tôi muốn biết liệu có cách nào tôi có thể làm điều này mà không cần mảng và chuỗi.

Đây là mã của tôi. Xin vui lòng, nếu bạn có bất kỳ cải tiến nào cho mã của tôi, tôi muốn biết nó :)

#include 
#include 

void checkUserCode(int num1[4], int num2[4]); // declare the function which check the guess

int hits=0, misses=0; // hits and misses in the guess

int main(void)
{
    int userCode=0;
    int userCodeArray[4];
    int systemCodeArray[4]={1, 4, 6, 3};
    int i=0;

    // printing description
    printf("welcome to the guessing game!\n");
    printf("your goal is to guess what is the number of the system!\n");
    printf("the number have 4 digits. Each digit can be between 1 to 6\nGood Luck!\n");

    // input of user guess
    printf("enter number: ");
    scanf("%d", &userCode);

    for (i=3; i>=0; i--)
    {
        userCodeArray[i]=userCode%10;
        userCode=userCode/10;
    }

    checkUserCode(systemCodeArray, userCodeArray);

    printf("there are %d hits and %d misess", hits, misses); // output

    return 0;
}



 /*
   this function gets two arrays and check its elements
   input (parameters): the two arrays (codes) to check
   output (returning): number of hits and misses

   if the element in one array also contains in the other array but not the same index: add a miss
   if the element in one array also contains in the other array and they have the same index: add a hits
*/

void checkUserCode(int num1[4], int num2[4])
{
    int i=0, j=0;

    for (i=0; i<4; i++)
    {
        for (j=0; j<4; j++)
        {
            if(num1[i]==num2[j])
            {
                if (j==i)
                    hits++;
                else
                    misses++;
            }
        }
    }
}

Chúng ta có thể sử dụng các loại dữ liệu sẵn có để so sánh hai số nguyên phù hợp với phạm vi của loại dữ liệu tương ứng. Như bạn đã biết, có giới hạn số nguyên tối đa có thể được lưu trữ trong một loại dữ liệu. Chúng tôi sẽ sử dụng các chuỗi để lưu trữ số nguyên và sau đó tạo một hàm để so sánh các số nguyên. Một số nguyên có thể là tích cực, bằng không hoặc âm, chúng tôi sẽ chăm sóc nó trong chương trình của chúng tôi.

Thuật toán so sánh:

Nếu cả hai số là dương: nếu độ dài của một trong số chúng lớn hơn số khác, số lượng lớn hơn là lớn hơn. Nếu độ dài của cả hai là giống nhau thì chúng tôi so sánh các chữ số riêng lẻ của cả hai số, nếu bất kỳ chữ số nào của đầu tiên là lớn hơn thì số thứ hai thì đầu tiên lớn hơn và ngược lại. Nếu cả hai chữ số đều bằng nhau thì chúng ta sẽ chuyển sang các chữ số tiếp theo. Nếu chuỗi kết thúc thì cả hai số đều bằng nhau.

Nếu bất cứ ai trong số là âm thì số dương là số lớn hơn.

Nếu cả hai số đều âm thì logic giống với số so sánh các số dương ngoại trừ một thứ: số có độ lớn nhỏ hơn là số lớn hơn.

C chương trình để so sánh các số bằng chuỗi

#include #include
#include

int so sánh (char [], char []); compare(char [], char []);

int main () {& nbsp; char a [1000], b [1000]; & nbsp; int n; main()
{
  char a[1000], b[1000];
  int n;

& nbsp; printf ("Nhập hai số nguyên \ n");printf("Enter two integers\n");

& nbsp; Scanf ("%s%s", a, b);scanf("%s%s", a, b);

& nbsp; n = so sánh (a, b);= compare(a, b);

& nbsp; if (n == 1) & nbsp; & nbsp; printf ("Đầu tiên. \ n"); & nbsp; otherif (n == 0) & nbsp; & nbsp; printf ("bằng nhau. \ n"); & nbsp; khác & nbsp; & nbsp; printf ("thứ hai. \ n");if (n == 1)
    printf("First.\n");
  else if (n == 0)
    printf("Equal.\n");
  else
    printf("Second.\n");

& nbsp; return0;}return 0;
}

int so sánh (char a [], char b []) {& nbsp; int L1, L2, P1, P2, N; compare(char a[], char b[]) {
  int l1, l2, p1, p2, n;

& nbsp; // Kiểm tra xem bất kỳ số nào có âm không// Checking if any of the numbers is negative

& nbsp; if (a [0] == '-') & nbsp; & nbsp; p1 = 0; & nbsp; khác & nbsp; & nbsp; P1 = 1;if (a[0] == '-')
    p1 = 0;
  else
    p1 = 1;

& nbsp; if (b [0] == '-') & nbsp; & nbsp; p2 = 0; & nbsp; khác & nbsp; & nbsp; P2 = 1;if (b[0] == '-')
    p2 = 0;
  else
    p2 = 1;

& nbsp; // Tính độ dài của chuỗi// Calculating length of strings

& nbsp; l1 = strlen (a); & nbsp; l2 = strlen (b);= strlen(a);
  l2 = strlen(b);

& nbsp; // cả hai số dương// Both numbers positive

& nbsp; if (p1 == 1 && p2 == 1) {& nbsp; & nbsp; if (l1> l2) & nbsp; & nbsp; & nbsp; return1; & nbsp; & nbsp; otherif (l2> l1) & nbsp; & nbsp; & nbsp; return2; & nbsp; & nbsp; khác {& nbsp; & nbsp; & nbsp; for (n = 0; n b [n]) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return1; & nbsp; & nbsp; & nbsp; & nbsp; if (b [n]> a [n]) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; return2; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; if (n == l1) & nbsp; // có thể được xóa (tùy chọn) & nbsp; & nbsp; & nbsp; & nbsp; return0; & nbsp; & nbsp; } & nbsp; }if (p1 == 1 && p2 == 1) {
    if (l1 > l2)
      return 1;
    else if (l2 > l1)
      return 2;
    else {
      for (n = 0; n < l1; n++) {
        if (a[n] > b[n])
          return 1;
        if (b[n] > a[n])
          return 2;
      }
      if (n == l1)  // Can be removed (optional)
        return 0;
    }
  }

& nbsp; // Nếu một số là dương và số khác là âm// If one number is positive and other is negative

& nbsp; if (p1 == 1 && p2 == 0) // đầu tiên không có tích cực & nbsp; & nbsp; return1; & nbsp; if (p1 == 0 && p2 == 1) // thứ 2 không có tích cực & nbsp; & nbsp; return2;if (p1 == 1 && p2 == 0) // 1st no positive
    return 1;
  if (p1 == 0 && p2 == 1) // 2nd no positive
    return 2;

& nbsp; // Nếu cả hai số âm âm// If both numbers negative

& nbsp; Nếu (l1if (l1 < l2)
    return 1;
  if (l2 < l1)
    return 2;

& nbsp; for (n = 1; nfor (n = 1; n < l1; n++) {
    if (a[n] < b[n])
      return 1;
    if (b[n] < a[n])
      return 2;
  }

& nbsp; return0; // cả hai số (-ve) đều giống nhau.}return 0; // Both numbers (-ve) are same.
}

Làm thế nào để bạn so sánh các chữ số của một số?

Trả lời: Số có nhiều chữ số hơn là số lượng lớn hơn.Nếu hai số có cùng một số chữ số, thì hãy so sánh các chữ số bên trái của cả hai số.The number with more digits is the greater number. If two numbers are having the same number of digits, then compare the left-most digits of both numbers.

Làm thế nào để bạn kiểm tra xem tất cả các chữ số của một số là giống nhau?

Nếu không, in không ...
Examples:.
Cách tiếp cận ngây thơ: Cách tiếp cận đơn giản nhất để giải quyết vấn đề đã cho là lặp lại trên tất cả các chữ số của số n đã cho và nếu tồn tại bất kỳ chữ số riêng biệt nào thì in có.Nếu không, in không ..