01/10/2018, 00:17

Cách trả 1 mảng về hàm main để hàm main in ra trong C?

hàm Q4 ạ em ko pit trả mảng về hàm main để in kiểu gì

#include<stdio.h>
#include<conio.h>
menu()
{
    printf("
1.nhap so nguyen N va mot mang nguyen gom N phan tu ");
    printf("
2.tinh trung binh cong cua cac phan tu trong mang vua nhap");
    printf("
3.tinh trung binh cong cac phan tu chia het cho 3 trong mang");
    printf("
4.xoat tat cac cac phan tu chia het cho 3 va hien thi mang gom cac phan tu con lai");
    printf("
5.thoat");
}
int Q1(int *n,int A[])
{
    int i;
    printf("
N=");
    scanf("%d",n);
    while(!(*n>0 && *n<100))
    {
        printf("
 nhap lai N=:");
        scanf("%d",n);
    }
    for(i=0; i<*n; i++)
    {
        printf("
A[%d]=",i);
        fflush(stdin);
        scanf("%d",&A[i]);
    }
}
float  Q2(int n,int A[])
{
    int i;
    float tong=0,tb;
    for(i=0; i<n; i++)
        tong=tong+A[i];
    tb=tong/n;
    return tb;
}
float Q3(int n,int A[])
{
    int i,dem=0;
    float tong=0,tb;
    for(i=0; i<n; i++)
    {
        if(A[i]%3==0)
        {
            dem++;
            tong=tong+A[i];
        }
    }
    tb=tong/dem;
    if(dem==0)
        tb=0;
    return tb;
}
int Q4(int n,int A[])
{
    int i;
    for(i=0; i<n-1; i++)
    {
        if(A[i]%3==0)
        {
            A[i]=A[i+1];
            --n;
        }
        printf("
 %d",A[i]);
    }
    return A;
}
void main()
{
    int i,n,*A,chon;
    clrscr();
    while(1)
    {
        menu();
        printf("
 moi ban chon 1 muc:");
        scanf("%d",&chon);
        while(!(chon>0 && chon<=5))
        {
            printf("
 moi ban chon lai 1 muc:");
            scanf("%d",&chon);
        }
        switch(chon)
        {
        case 1:
            Q1(&n,A);
            break;
        case 2:
            printf("
 tb=%f",Q2(n,A));
            break;
        case 3:
            printf("
tb=%f",Q3(n,A));
            break;
        case 4:
            Q4(n,A);
            break;
        case 5:
            return 0;
        }
    }
    getch();
}
Khoa NTA viết 02:24 ngày 01/10/2018

Bạn sửa hàm Q4 thành int *Q4(int n, int A[]) là được nha. Đó là cách return, còn việc xử lý như thế nào thì tùy bạn :3

Dấu Chấm viết 02:20 ngày 01/10/2018

tại hàm main e gọi mảng m=Q4(n,A);
for(i=0;i<n;i++)
printf("\n %s",m[i]);
chạy xog đơ luôn a

Khoa NTA viết 02:23 ngày 01/10/2018

Đầu tiên là bạn chỉ hỏi cách return 1 mảng thôi nên mình trả lời thế và mình còn nói việc xử lý là của bạn mà Bạn nên học cách cấp phát động (hàm malloc()) hoặc chuyển đổi int *A thành int A[100] (số nào lớn cũng được để tránh segmentation fault).
Thứ 2, bạn khai báo cho m phải là mảng kiểu int, không phải int nhé (mình đoán mò thôi).
Thứ 3, bạn chỉ cho mình biết là m=Q4(n, A) rồi đơ thì mình cũng không biết đầu đuôi tai nheo ra sao mà giải quyết cho bạn, nhớ post code (có liên quan đến các hàm và các biến) và dùng markdown nữa nhé

Bài liên quan
0