30/09/2018, 16:48

[Hỏi] Chuyển một số dòng lệnh trong hàm main sang hàm con

#include <stdio.h>
#include <stdlib.h>

void nhap_hang_cot(int *hang, int *cot, char ten){
    printf("Nhap so hang ma tran %c: ", ten); scanf("%d", hang);
    printf("Nhap so cot ma tran %c: ", ten); scanf("%d", cot);
}

void nhap_du_lieu(int (*a)[50], int hang, int cot, char ten){
    int i, j, x;

    printf("Nhap du lieu ma tran %c: 
", ten);
    for(i=0; i<hang; i++)
        for(j=0; j<cot; j++){
            printf("Nhap %c[%d][%d]: ", ten, i, j);
            scanf("%d", &x);
            a[i][j] = x;
        }
}

void in(int (*a)[50], int hang, int cot, char ten){
    int i, j;
    printf("Ma tran %c:

", ten);
    for(i=0; i<hang; i++){
        for(j=0; j<cot; j++)
            printf("%3d", a[i][j]);
        printf("
");
    }
}

void tinh(int (*a)[50], int (*b)[50], int (*c)[50], int hang, int cot){
    int i, j, k;
    for(i=0; i<hang; i++)
        for(j=0; j<cot; j++){
            c[i][j] = 0;
            for(k=0; k<cot; ++k)
                c[i][j] += a[i][k]*b[k][j];
            }
}
int main()
{
    int a[50][50], b[50][50], c[50][50], hang_a, cot_a, hang_b, cot_b;

    nhap_hang_cot(&hang_a, &cot_a, 'A');
    nhap_hang_cot(&hang_b, &cot_b, 'B');

    if(cot_a != hang_b){
        printf("
Ma tran khong hop le!");
        return 0;
    }

    nhap_du_lieu(a, hang_a, cot_a, 'A');
    nhap_du_lieu(b, hang_b, cot_b, 'B');

    in(a, hang_a, cot_a, 'A');
    in(b, hang_b, cot_b, 'B');

    tinh(a, b, c, hang_a, cot_b);

    in(c, hang_a, cot_b, 'C');

    getch();
    return 0;
}

Mọi người cho e ý tưởng học giúp e chuyển dòng lệnh đó sang hàm con được ko ạ, e nghĩ mà chưa ra :(. Sao cho nếu nhập sai thì n sẽ thoát chương trình! Hoặc nếu n quay lại bước nhap_hang_cot thì càng tốt a.!

 if(cot_a != hang_b){
            printf("
Ma tran khong hop le!");
            return 0;
        }
Nguyễn Minh Dũng viết 18:57 ngày 30/09/2018

Anh thấy dòng lên này ổn mà, việc gì phải đổi thành hàm?

NOName viết 19:03 ngày 30/09/2018

E nghĩ nếu chuyển hết thành hàm con thì chương trình main nhìn n đẹp Như vậy có nên k a

Nguyễn Minh Dũng viết 18:51 ngày 30/09/2018

Không hẳn, chỉ khi nào chuyển thành hàm nó trở nên rõ hơn thì mới nên chuyển thành hàm. Anh ví dụ nhé:

Anh có 3 dòng lệnh như sau, và có một dòng comment ở trên đầu.

# Setup dhcp fallback 
local _cpx_fb_ipaddr=`uci get network.lan._cpx_fb_ipaddr` 
local _cpx_fb_netmask=`uci get network.lan._cpx_fb_netmask` 
sh /usr/bin/dhcp_fallback.sh $_cpx_fb_ipaddr $_cpx_fb_netmask & 

Thì anh nên tạo thành một hàm như sau:

setup_dhcp_fallback() { 
    local _cpx_fb_ipaddr=`uci get network.lan._cpx_fb_ipaddr` 
    local _cpx_fb_netmask=`uci get network.lan._cpx_fb_netmask` 
    sh /usr/bin/dhcp_fallback.sh $_cpx_fb_ipaddr $_cpx_fb_netmask & 
} 

Còn trường hợp của em thì đã khá rõ ràng rồi.

Bài liên quan
0