Code xoá mảng bị sai

c

(Giai Tuệ) #1

chả là khi em xóa mảng thứ nhất ấy ạ ._.

thì em xóa mảng thì nó lại không xóa mảng ban đầu mà lại xóa tiếp cái mảng em vừa xóa ạ ._.

các tiền bối cho em xin chút ý kiến với sai lầm của em với ạ ._. em xin cám ơn ạ

#include<stdio.h>
#define max 100
#include<stdlib.h>

void nhapMang(float a[], int n){
	for(int i=0;i<n;i++){
		printf("\na[%d]= ",i);
		scanf("%f", &a[i]);
	}
}

void xuatMang(float a[], int n){
	for(int i=0;i<n;i++){
		printf("\na[%d]= %f", i, a[i]);
	}
}

float min(float a[], int n){
	float beel=a[0];
	for(int i=0;i<n;i++){
		if(a[i]<beel){
			beel=a[i];
		}
	}
	return beel;
}

void min1(float a[], int n){
	float vt;
	float count=0;
	printf("\nGia tri min o cac vi tri la:\n ");
	for(int i=0;i<n;i++){
			if(a[i]==min(a,n)){
			vt=i;
			printf("%.2f\t\t", vt);
			}
	}
	for(int i=0;i<n;i++){
		if(a[i]==min(a,n)){
			count++;
		}
	}
	printf("\nSo phan tu min la: %.2f", count);
}

float xoa1(float a[], int &n){
	printf("\nXoa tat ca cac phan tu min trong day: ");
	for(int i=0;i<n;i++){
		if(a[i]==min(a,n)){
			for(int j=i;j<n;j++){
				a[j]=a[j+1];
			}
			i--;
			n--;
		}
	}
}

float xoa2(float a[], int &n){
	printf("\nXoa phan tu min dau tien trong day: ");
	for(int i=0;i<n;i++){
		if(a[i]==min(a,n)){
			for(int j=i;j<n;j++){
				a[j]=a[j+1];
			}
			n--;
			break;
			}
	}
}
int main(){
	float a[max];
	int n;
	do{
		printf("\nNhap n: ");
		scanf("%d", &n);
		if(n<=0 || n>=100){
			printf("\nNhap lai: ");
		}
	}while(n<=0 || n>=100);
	
	nhapMang(a,n);
	printf("\nMang ban dau la: ");
	xuatMang(a,n);
	
	printf("\nGia tri nho nhat cua mang la: %f", min(a,n));
	
	min1(a,n);
	
	xoa1(a,n);
	printf("\nMang la: ");
	xuatMang(a,n);
	
	xoa2(a,n);
	printf("\nMang la: ");
	xuatMang(a,n);
	
	return 0;
}

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?