anh em giúp tớ bài này nhé
tớ chèn thêm phần tử vào trong mảng sau phần tử max nhưng chỉ đúng với trong mảng có 1 phần tử max thui
tớ muốn làm đúng cả với trong mảng có nhìu phần tử max thì phải sửa code ntn
thanks moi người
code chua mình nè:
#include<stdio.h>
#include<conio.h>
#define MAX 100
void nhap(int a[],int &n)
{
printf("nhap vao so phan tu cua mang:\n");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
printf("\n");
}
}
void inmang(int a[],int n)
{
printf("\n mang vua nhap la :\n");
for(int i=0;i<n;i++)
{
printf("%d",a[i]);
printf("\t");
}
}
int ptMAX(int a[],int &n)
{
int max=a[0];
for(int i=1;i<n;i++)
{
if(max<a[i])
max=a[i];
}
return max;
}
int vitri(int a[],int &n)
{
for(int i=0;i<n;i++)
{
if(a[i]==ptMAX(a,n))
return i;
}
}
void chenmang(int a[],int &n,int x)
{
for(int i=n;i>vitri(a,n);i--)
{
a[i]=a[i-1];
a[vitri(a,n)+1]=x;
n++;
}
}
void chenchan(int a[],int n,int x)
{
int i=0,j;
while(i<n)
{
if(a[i]%2==0)
{
for(j=++n;j>=i+2;j--)
{
a[j]=a[j-1];
a[i+1]=x;
i+=2;
}
}
else i++;
}
}
void main()
{
fflush(stdin);
int a[MAX],n,x;
nhap(a,n);
printf("\n nhap phan tu x=");
scanf("%d",&x);
chenmang(a,n,x);
inmang(a,n);
getch();
}
Cách làm của bạn ở hàm chèn mảng nên sửa lại là:
- Lưu giá trị max vào 1 biến.
- Duyệt mảng, tiến hành tìm kiếm vị trí phần tử max, rồi gọi hàm chèn phần tử vào mỗi vị trí max tìm được. Duyệt đến hết mảng.
Hàm này :int ptMAX(int a[],int &n)
không dùng tham chiếu ở biến n làm gì, thừa.
Có 1 cách khác đỡ tốn chi phí dồn mảng hơn cách trên là: Lưu lại vị trí và số lượng các phần tử max sau đó mới tiến hành dồn mảng theo các thông tin trên. Như thế này chỉ dồn 1 lần.
Gió thu lạnh lẽo hắt hiu lòng!