01/10/2018, 13:42

In phần tử lớn nhất nhỏ nhất trong mảng và in ra mảng đó sau khi đổi chỗ 2 phần tử lớn nhất nhỏ nhất với nhau

mọi người xem thử code mình có sai ở đâu không. Kiểm tra ko có error nhưng khi chạy ra không đúng

#include<stdio.h>
int Max(int a[], int n)
{
	int max=a[0],jm;
	for ( int j=0;j<n;j++)
		if(max<=a[j])
			{
			max=a[j];
			jm=j;
			}
		return jm-1;
}
int Min(int a[], int n)
{
	int min=a[0],km;
    for(int k=0;k<n;k++)
    {
        if(a[k]<=min )
            min=a[k];
			km=k;
		}
		return km-1;
}
void hoandoi(int a, int b)
{
	int t;
	t=a;
	a=b;
	b=t;
}

void main()
{	
	int n;
	int a[100];
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);
	int x =	Max(a,n);
	int y = Min(a,n);
	printf("phan tu lon nhat la %d.
",x);
	printf("phan tu nho nhat mang la %d.
",y);
		hoandoi(a[x],a[y]);
	for( i=0;i<n;i++)
		printf("%d",a[i]);
}
HK boy viết 15:52 ngày 01/10/2018

Index đã đếm từ 0 rồi, việc gì phải trừ 1 ở index đã lưu nữa?

for ( int j=0;j<n;j++)
if(max<=a[j])
{
max=a[j];
jm=j;
}
return jm-1;

for(int k=0;k<n;k++)
{
if(a[k]<=min )
min=a[k];
km=k;
}
return km-1;

Lưu ý:

  • Dùng int main() thay vì void main().
  • Không nên đặt tên biến là min, max.
Hà Hải Long viết 15:56 ngày 01/10/2018

bạn ơi cái hàm min của mình có sai không sao tìm max thì đúng nhưng min thì sai

HK boy viết 15:43 ngày 01/10/2018

Bạn thử bộ input

7
3 9 2 4 5 1 8

xem in ra gì.

Hà Hải Long viết 15:49 ngày 01/10/2018

hàm max thì in ra phần tử lớn nhất là đúng nhưng còn min thì lúc nào nó cũng in ra cái cuối cùng và hàm hoán đổi của mình nó cũng không hoán đổi được 2 phần tử

HK boy viết 15:45 ngày 01/10/2018

void hoandoi(int a, int b)
{
int t;
t=a;
a=b;
b=t;
}

Phải nạp vào tham chiếu/con trỏ.

Hà Hải Long viết 15:52 ngày 01/10/2018

void(int &a, int &b) p ko bạn. Còn hàm min của mình có bị lỗi gì không sao nó cứ in ngay phần tử cuối

HK boy viết 15:55 ngày 01/10/2018

void(int &a, int &b) p ko bạn

Nếu bạn code C++ thì phải.

Thế tóm lại bạn code C hay C++?

Hà Hải Long viết 15:50 ngày 01/10/2018

mình code c. Nhưng khi thêm &a, &b vào thì giá trị dc trả về nên đổi vị trí được cho nhau

rogp10 viết 15:55 ngày 01/10/2018

Câu này không có trong C. Trong C chỉ có mỗi void(int*, int*) và gọi hàm thì dùng &.

Bài liên quan
0