30/09/2018, 18:44

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.

Thành Phạm viết 20:55 ngày 30/09/2018

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

Nguyễn Văn Dũng viết 20:59 ngày 30/09/2018

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

Nguyễn Văn Dũng viết 20:52 ngày 30/09/2018

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;
Bài liên quan
0