Dùng con trỏ tính LONG_LONG_MAX theo cơ số mũ

Đây là chương trình của mình:

#include <iostream>
#include <limits.h>
using namespace std;

long long (*p)(long long*, long long*) = 0;

long long log(long long* a, long long* b){
    if (*a == 0) {
        return 0;
    }
    else if (*a == 1) {
        return *b;
    }
    else if (*b == 0) {
        return 0;
    }
    else if (*b == 1) {
        return 1;
    }
    *b /= *a;
    return (*p)(a, b) + 1;
}

int main()
{
    long long a = 2;
    long long b = LONG_LONG_MAX;
    p = &log;
    cout << (*p)(&a, &b) << endl;
    return 0;
}

tại đoạn

*b /= *a
return (*p)(a, b) + 1;

Mình muốn dùng một câu lệnh mà có thể chứa ý nghĩa của cả hai câu lệnh trên có được không?
Nếu được thì dùng như thế nào? Cảm ơn các bạn đã xem bài của mình.

Bạn đặt category topic hộ mình cái, mình sửa bài cho bạn vài lần rồi đấy :sweat_smile:

1 Like

Cảm ơn vì đã nhắc nhở. Mình sẽ cẩn thận hơn.

1 Like

Do mình gõ sai lần đầu nên có thể không ra. Mình vừa thử lại xong và kết quả như ý:smile:

 return (*p)(a, (&(*b /= *a)) ) + 1;
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?