Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ kiểm tra số may mắn (tất cả chữ số đều khác nhau)

Cho một số, nhiệm vụ là kiểm tra xem số nhập vào có phải là số may mắn hay không và hiển thị kết quả.

Số may mắn là gì?

Số may mắn là số mà từng chữ số của nó đều khác nhau, và nếu ít nhất một chữ số lặp lại thì số đó không được coi là số may mắn.

Ví dụ

Đầu vào: n = 1234
Đầu ra: đây là số may mắn
Giải thích: Không có chữ số nào lặp lại trong số n nên nó là số may mắn

Đầu vào: n = 3434
Đầu ra: đây không phải số may mắn
Giải thích: Trong số n cho trước, 3 và 4 lặp lại 2 lần nên không phải số may mắn

Phương pháp sử dụng trong chương trình cho trước:

  • Nhập số n từ người dùng để kiểm tra xem nó có phải số may mắn hay không
  • Duyệt qua tất cả các chữ số cho đến hết độ dài của số
  • Đánh dấu chữ số đã thăm mỗi lần thăm và kiểm tra xem nó đã được tìm thấy chưa
  • Hiển thị số đã cho có phải là số may mắn hay không

THUẬT TOÁN

BẮT ĐẦU
Bước 1 → Khai báo hàm kiểm tra số có may mắn hay không
    bool check_lucky(int size)
    Khai báo bool arr[10]
    VỒNG LẶP VỚI int i=0; i<10; i++
        Gán arr[i] = false
    KẾT THÚC
    VỒNG LẶP KHI (size > 0)
        Khai báo int digit = size % 10
        NẾU (arr[digit])
            TRẢ VỀ false
        KẾT THÚC
        Gán arr[digit] = true
        Gán size = size/10
    KẾT THÚC
    TRẢ VỀ true
Bước 2 → Trong main()
    Khai báo int arr[] = {0,34,2345,1249,1232}
    Tính int size = sizeof(arr)/sizeof(arr[0])
    VỒNG LẶP VỚI int i=0; i

Ví dụ mã nguồn

#include <iostream>
using namespace std;

// Trả về true nếu số là may mắn
bool check_lucky(int size) {
    bool arr[10];
    for (int i=0; i<10; i++)
        arr[i] = false;
    while (size > 0) {
        int digit = size % 10;
        if (arr[digit])
            return false;
        arr[digit] = true;
        size = size/10;
    }
    return true;
}

int main() {
    int arr[] = {0,34,2345,1249,1232};
    int size = sizeof(arr)/sizeof(arr[0]);
    for (int i=0; i

Kết quả đầu ra

0 is Lucky
34 is Lucky
2345 is Lucky
1249 is Lucky
1232 is not Lucky