Lỗi Invaild fuction declaration và cannot convert ‘const char*’ to ‘int

Đây là đoạn code của mình !

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

void nhapMT(int a[10][10], int m, int n)
    {
    int i,j;
    printf ("nhap vao ma tran :\n");
    for (i=1; i<=m; i++)
        for (j=1; j<=n; j++)
            {
            printf("\na[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
            }
    }

void inMT(int a[10][10], int m, int n)
    {
    int i,j;
    for (i=1; i<=m; i++)
        {
        for (j=1; j<=n; j++)
            printf ("%d\t",a[i][j]);
        printf ("\n");
        printf ("\n");
        }

    }
void nhanMT(int a[10][10], int b[10][10], int c[10][10], int m,int n, int p)
    {
    int i,j,k;
    for (i=1; i<=m; i++)
        for (j=1; j<=n; j++)
            {
            c[i][j]=0;
            for (k=1; k<=p; k++)
                c[i][j]+= a[i][k]*b[k][j];
            }
    }

int main
    {
    int a[10][10],b[10][10],c[10][10];
    int m1,n1,m2,n2,m,n,p;
    printf ("nhap vao so hang ma tran A: ");
    scanf ("%d",&m1);
    printf ("nhap vao so cot mat tran A: ");
    scanf ("%d",&n1);
    nhapMT(a,m1,n1);
    printf("A:\n");
    inMT(a,m1,n1);
    printf ("nhap vao so hang ma tran B: ");
    scanf ("%d",&m2);
    printf ("nhap vao so cot ma tran B: ");
    scanf ("%d",&n2);
    nhapMT(b,m2,n2);
    printf("B:\n");
    inMT(b,m2,n2);

    if (n1!=m2)
        printf ("khong nhan duoc");
    else
        {
        nhanMT(a,b,c,m1,n2,n1);
        printf ("tich cua 2 ma tran la:\n");
        inMT(c,m1,n2);
        }
    }

=>Mình muốn hỏi : Ở dòng Int main nếu k có () thì nó báo lỗi Invaild fuction declaration. Còn nếu có () thì nó báo lỗi cannot convert ‘const char*’ to ‘int ()[10]’ for argument ‘1’ to ‘void nhapMT(int ()[10], int, int)’
Như này là sao ?

Đã là hàm thì phải có dấu () nhé, đó là cú pháp.
Code của bạn mình biên dịch không có lỗi gì cả khi thêm () vào hàm main: int main()

@Pham_Van_Hai Mình cũng hiểu thế mà b.Nhưng mà khi chạy trên win thì Code ngon lành.
Nhưng nếu code trên Linuxx. B nhớ là Linux nhé b ?

Code của bạn mình cũng chạy trên Linux (Xubuntu)

mình cũng code trên Ubuntu ngon lành nhưng đây là trên Linux

nó báo lỗi thế này

Còn nếu k thêm () thì nó lại báo lỗi Invail fuciton main là sao b ? :frowning:

Linux là chỉ các hệ điều hành dùng Linux Kernel: Xubuntu là một bản phân phối dùng Linux Kernel nên nó vẫn là Linux nhé.

Đây là lỗi sử dụng hàm nhapMT trong hàm main của bạn: bạn khai bao hàm có tham số int (*)[10] nhưng khi bạn gọi hàm nhapMT bạn lại truyền vào tham số có kiểu ```const char*````. Bạn check lại code trong CentOS đi nhé.

Thế fixx thế nào hả b ? :frowning:
Mình chỉ đc code trên máy chủ của thầy qua PuTTy thôi b.
linux này mình k fix đc chứ trên win thì đơn giản rồi :frowning:

Bạn copy code trên Win lên máy Linux.

Như nhau cả b à :(. mà cái linux này cũng k cop vs paste đc :frowning:
Thầy chơi khó học sinh thế ms đau chứ :frowning:

Nếu bạn dùng Putty thì copy bình thường nhé, bạn làm như sau:

  1. gõ lệnh vim hello.c
  2. Nhấn i để vào chế độ insert
  3. Copy nội dung chương trình của bạn
  4. Nhấn chuột phải để paste nội dung vào Putty.
  5. Nhấn ESC để về chế độ lệnh
  6. Nhấn :wp đế lưu nội dung vào file và thoát vim
1 Like
#include <stdio.h>
#include <stdlib.h>

void nhapMT(int a[][10], int m, int n);
void inMT(int a[][10], int m, int n);
void nhanMT(int a[][10], int b[][10], int c[][10], int m, int n, int p);

int main()
{
    int a[10][10], b[10][10], c[10][10];
    int m1, n1, m2, n2;
    printf("nhap vao so hang ma tran A: ");
    scanf("%d", &m1);
    printf("nhap vao so cot mat tran A: ");
    scanf("%d", &n1);
    nhapMT(a, m1, n1);
    printf("A:\n");
    inMT(a, m1, n1);
    printf("nhap vao so hang ma tran B: ");
    scanf("%d", &m2);
    printf("nhap vao so cot ma tran B: ");
    scanf("%d", &n2);
    nhapMT(b, m2, n2);
    printf("B:\n");
    inMT(b, m2, n2);

    if (n1 != m2)
        printf("khong nhan duoc");
    else
    {
        nhanMT(a, b, c, m1, n2, n1);
        printf("tich cua 2 ma tran la:\n");
        inMT(c, m1, n2);
    }
}

void nhapMT(int a[][10], int m, int n)
{
    int i, j;
    printf("nhap vao ma tran :\n");
    for (i = 1; i <= m; i++)
    for (j = 1; j <= n; j++)
    {
        printf("\na[%d][%d]=", i, j);
        scanf("%d", &a[i][j]);
    }
}

void inMT(int a[][10], int m, int n)
{
    int i, j;
    for (i = 1; i <= m; i++)
    {
        for (j = 1; j <= n; j++)
            printf("%d\t", a[i][j]);
        printf("\n");
        printf("\n");
    }

}

void nhanMT(int a[][10], int b[][10], int c[][10], int m, int n, int p)
{
    int i, j, k;
    for (i = 1; i <= m; i++)
    for (j = 1; j <= n; j++)
    {
        c[i][j] = 0;
        for (k = 1; k <= p; k++)
            c[i][j] += a[i][k] * b[k][j];
    }
}

1 Like

Đây là b code lại hay cop code của mình vậy ?

cảm ơn b nhé :dancer:

@Pham_Van_Hai DÙng lệnh vim , k đc b ơi :frowning:

thế bạn dùng lệnh vi thử xem

Bây h bấm vi < tên tệp> rồi nó vào hẳn luôn b à. k cần ấn i nữa mà ấn i cũng k đc mà ấn chuột phải cũng k đc :frowning: mà ấn ESC cũng k thoát đc.bây h phải làm sao hả b ? :frowning:

Khi bạn dùng lệnh vi file thì nó sẽ mở file và ở chế độ lệnh bạn sẽ không gõ text trong này được, bạn phải nhấn i (insert) thì bạn mới gõ text được, sau khi gõ text xong bạn nhấn ESC nó sẽ ra chế độ dòng lệnh khi này bạn gõ :wq để thoát vi (w: write, q: quit).

k đc b ạ. mình ấn Crt+Z thì nó hiện ra Stopped Vi …
Chắc đc rồi b à hết hồn :frowning:

code tren co chay hay khong?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?