kết quả từ 1 tới 4 trên 4

Thay thế trong mảng 2 chiều

  1. #1
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 388407
    Giới tính: Nam
    Bài gửi
    2
    Quick reply to this message Trả lời       


  2. #2
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Thay thế trong mảng 2 chiều

    Bạn cứ cho vòng lặp xét từng hàng, mỗi hàng tìm những phần tử giống nhau. Em viết đại ra thế này, chưa có hay cho lắm nhưng mà khá sát với đề:
    Mã:
    double ** thay_the(int **a, int n) {
        int i, j, k;
        double **b = (double **)malloc(sizeof(double) * n);
        for (i = 0; i < n; i++)
            b[i] = (double *)malloc(sizeof(double) * n);
        for (i = 0; i < n; i++)
            for (j = 0; j < n; j++)
                b[i][j] = a[i][j];
        for (i = 0; i < n; i++)
            for (j = 0; j < n; j++) {
                for (k = j + 1; k < n; k++)
                    if (a[i][j] == a[i][k]) {
                        b[i][j] = (a[i][j] + a[j][i]) / 2.;
                        b[i][k] = (a[i][k] + a[k][i]) / 2.;
                    }
            }
        return b;
    }

  3. #3
    Ðến Từ
    Hà Nội
    Thành Viên Thứ: 388407
    Giới tính: Nam
    Bài gửi
    2

    Reply: Thay thế trong mảng 2 chiều

    Thực ra mình cũng không hiểu lắm vì chưa học con trỏ

  4. #4
    Ðến Từ
    TP. Hồ Chí Minh
    Thành Viên Thứ: 402126
    Giới tính: Nữ
    Bài gửi
    38

    Reply: Thay thế trong mảng 2 chiều

    Vậy thì bạn chỉ cần thế này thôi. Mảng b bạn tự khai báo
    Mã:
    for (i = 0; i < n; i++)
            for (j = 0; j < n; j++)
                b[i][j] = a[i][j];
        for (i = 0; i < n; i++)
            for (j = 0; j < n; j++) {
                for (k = j + 1; k < n; k++)
                    if (a[i][j] == a[i][k]) {
                        b[i][j] = (a[i][j] + a[j][i]) / 2.;
                        b[i][k] = (a[i][k] + a[k][i]) / 2.;
                    }
            }
        return b;

  5. Đã cảm ơn LanSG9x:


Nhãn