Lập trình C: Tìm Max, Min bằng phương pháp sắp xếp

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Dưới đây là cách tìm các giá trị lớn nhất, nhỏ nhất, dương lớn nhất, dương nhỏ nhất, âm lớn nhất và âm nhỏ nhất bằng phương pháp sắp xếp tăng dần. Đoạn mã như sau:

#include<stdio.h>
#include<conio.h>

void nhapLieu(int a[], int *N){
    int i;
    do{
        printf("\nN = ");
        scanf("%d",&*N);
    }while(!(*N>0 && *N<=99));
    printf("\nNhap lieu cho mang:");
    for(i=0; i<*N; i++){
        printf("\na[%d] = ",i);
        scanf("%d",a+i);
    }
}
//Demo cach tim Max, Min bang phuong phap sap xep
//Truoc tien ta sap xep mang tang dan
void timMaxMin(int a[], int N){
    int i, j;
    int tg;
    int SoDuongMin=0;
    int SoAmMax=0;
    for(i=0; i<N-1; i++){
        for(j=i+1; j<N; j++){
            if(a[i]>a[j]){
                tg=a[i];
                a[i]=a[j];
                a[j]=tg;
            }
        }
    }
    //Sau khi sap xep tang dan thi:
    //Gia tri nho nhat (Min) chinh la gia tri trong a[0]
    printf("\nGia tri nho nhat la: %d",a[0]);
    //Gia tri Max se nam trong phan tu a[N-1] (phan tu cuoi cung)
    printf("\nGia tri lon nhat la: %d",a[N-1]);
    //Tim so duong lon nhat (duong Max)
    //So duong Max se nam trong phan tu cuoi cung cua mang sau khi sap xep,
    //nhung phan tu do phai duong
    if(a[N-1]>0){
        printf("\nSo duong Max = %d",a[N-1]);
    }

    else
        printf("\nMang khong co so duong nao");
    //Tim so am nho nhat
    //So am nho nhat nam trong phan tu dau tien cua mang, nhung phan tu nay
    //phai <0
    if(a[0]<0)
        printf("\nSo am Min = %d",a[0]);
    else
        printf("\nMang khong co so am nao.");
    //Tim so duong Min
    //De de hinh dung, gia su sau khi sap xep ta duoc mang: -3 -2 1 2 3
    //thi so duong Min =1
    //Dung mot vong lap for duyet tung phan tu mot chi so 0 den N-1, neu thay
    //phan tu nao chua gia tri >0 thi do la gia tri duong Min, nguoc lai thi
    //khong co gia tri duong nao
    for(i=0; i<N; i++){
        if(a[i]>0){
            SoDuongMin=a[i];
            printf("\nSo duong nho nhat cua mang la: %d",a[i]);
            break;
        }
    }
    if(SoDuongMin==0)
        printf("\nMang khong co so duong nao");
    //Tim so am Max
    //So am Max nhu o tren chinh la -2. Muon lay no thi ta cho mot vong lap
    //duyet cac phan tu tu N-1 den 0, neu thay phan tu nao <0 thi do la
    //tu tu am Max, neu khong co phan tu nao thi mang khong co so am
    for(i=N-1; i>=0; i--){
        if(a[i]<0){
            printf("\nSo am Max = %d",a[i]);
            SoAmMax=a[i];
            break;
        }
    }
    if(SoAmMax==0)
        printf("\nMang khong co so am nao!");
}

void main(){
    int N;
    int a[99];
    int i;
    clrscr();
    nhapLieu(a,&N);
    timMaxMin(a,N);
    getch();
}

Video demo tại ĐÂY

» Tiếp: Tìm số nguyến tố trong mảng số thực
« Trước: Cách sắp xếp mảng
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!