Đầu tiên mình có 1 góp ý là bạn chịu khó bỏ code vào thẻ [code] [code] ( cái thứ 2 thì thêm / trước chữ code, mình không để vào được vì để vào nó sẽ tự hiểu và cho ra khoảng trắng, nên mình ghi ra cho bạn thấy ) cho đúng nội qui đã. Và đọc sơ qua code của bạn, thì thấy bạn khai báo 3 mãng đó 3 lần trong khi đối số bạn truyền vào cho các hàm thao tác chỉ là m và n. Mình đoán chắc nó sẽ không ra gì đúng không ? Vì nó chỉ thao tác trên các biến cục bộ thôi, hàm không có kiểu trả về void, thì làm sao nó cho ra kết quả được nhỉ ?
Bạn thử cho các mãng làm đối của các hàm xem sao ? Lần sau nếu post nhờ debug thì bạn nên post thêm cái bug đó lên nhé ! Thử lại 1 lần nữa xem sao ! Nếu vẫn không xong mình sẽ giúp cho T_T!
Bạn nhầm chỗ :
PHP Code:
void nhapdulieu(int m,int n);
void sapxep(float a[100],float b[100]);
Đây là prototype, bạn khai báo thế này nhưng khi truyền tham số cho các hàm này thì bạn lại truyền kiểu khác.
PHP Code:
void nhapdulieu(int m,int n)
{
float a[100],b[100];
int i,j;
printf("nhap phan tu cho mang a \n");
for(i=0;i<n;++i)
{
printf("nhap phan tu thu %d",i);
scanf("%f",&a[i]);
}
printf("nhap phan tu cho mang b \n");
for(j=0;j<m;++j)
{
printf("phan tu th %d",j);
scanf("%f",&a[j]);//Thằng này của mãng b mà, tại sao a[j] ở đây ?
}
Đây mình sữa lại cho nó chạy được rùi đó, do mình học C++ nên chỉ hiểu sơ sơ C mà thôi. Bạn coi thử xem :
PHP Code:
#include<stdio.h>
#include <iostream>
void nhapdulieu(int ,int , float*, float*);
void sapxep(int, int,float*, float*, float*);
void main()
{
float c[100],a[100],b[100];
int n,m,k;
printf("nhap so phan tu cho mang a va mang b");
scanf("%d %d",&n,&m);
nhapdulieu(m,n,a,b);
sapxep(m,n,a,b,c);
for (k=0;k<n+m;++k)
{
printf("5.2%f \t",c[k]);
}
int t; cin >> t;
}
void nhapdulieu(int m, int n, float *a, float *b)
{
int i,j;
printf("nhap phan tu cho mang a \n");
for(i=0;i<n;++i)
{
printf("nhap phan tu thu %d",i);
scanf("%f",&a[i]);
}
printf("nhap phan tu cho mang b \n");
for(j=0;j<m;++j)
{
printf("phan tu th %d",j);
scanf("%f",&b[j]);
}
}
void sapxep(int m, int n, float *a, float *b, float *c)
{
int i,j,k,r,t;
i=1;j=1;k=1;
while((i<=n)&&(j<=r))
{
if(a[i]<b[j])
{
c[k]=a[i];
i=i+1;
j=j+1;
}
else
{
c[k]=b[j];
i=i+1;
j=j+1;
}
if(i>n)
{
for(t=0;t<r-j;++t)
c[k+t]=b[j+t];
}
else
{
for(t=0;t<n-i;++t)
c[k+t]=a[i+t];
}
}
}