Giữ nguyên mảng cũ giữa hai thao tác

#include<stdio.h>
#include<math.h>
#define max 50
void Nhapmang(int arr[],int n){
	for(int i=0;i<n;i++){
		printf("arr[%d]=",i);
		scanf("%d",&arr[i]);
	}
}
void Xuatmang(int arr[],int n){
	for(int i=0;i<n;i++){
		printf("arr[%d]=%d\n",i,arr[i]);
	}
}
// Thay the phan tu
void Mangmoi(int arr[],int n){
	for(int i=0;i<n;i++){
		if(arr[i]<0){
			arr[i]=0;
		}
		printf("arr[%d]=%d\n",i,arr[i]);
	}
	
}
//Xoa ptu am
void Xoaptu(int arr[],int &n,int pos){
	for(int i=pos;i<n;i++){
		arr[i]=arr[i+1];
	}
	--n;
}
void Xoaptuam(int arr[],int &n){
	for(int i=0;i<n;i++){
		if(arr[i]<0){
			Xoaptu(arr,n,i);
			i--;
		}
	}
}
// Sap xep tang dan
void Tangdan(int arr[],int n){
	int tmp;
	for(int i=0;i<n-1;i++){
		for(int j=i+1;j<n;j++){
		if(arr[i]>arr[j]){
			tmp=arr[i];
			arr[i]=arr[j];
			arr[j]=tmp;
		}}
	}
}
int main(){
	int arr[max];
	int n;
	int pos;
	printf("Nhap n:");scanf("%d",&n);
	printf("\n---Nhap vao phan tu mang---\n");
	Nhapmang(arr,n);
	printf("\n---Xuat ra phan tu mang---\n");
	Xuatmang(arr,n);
printf("\nMang sau khi thay the phan tu am la:\n");
	Mangmoi(arr,n);
	Xoaptuam(arr,n);
	printf("\nMang sau khi xoa la:\n");
	Xuatmang(arr,n);
	Tangdan(arr,n);
	printf("\Mang sau khi sap xep la:\n");
	Xuatmang(arr,n);
}

Tức là em muốn hỏi khi em chạy code này đầu tiên nó sẽ thực hiện thay thế ptu âm thành 0 (Mảng thay thế) rồi các phần sau đó như là xóa ptu âm và sắp xếp tăng dần thì nó sử dụng mảng thay thế để thực hiện chứ ko phải mảng ban đầu. Xin chỉ e cách sửa lỗi.

Thêm một mảng phụ nữa, nhập xong mỗi lựa chọn bạn copy vào mảng phụ rồi chạy.

5 Likes

thật dự là mình chưa hiểu phải làm như nào. B có thể cụ thể hơn dc ko

Mảng phụ:

  • Giống kiểu mảng chính.
  • Cùng số lượng phần tử.
  • Các giá trị cùng tại 1 chỉ số đều giống nhau.

Có thể hiểu nó như là “Backup Copy”.

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