Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C by registered user nhan ( 5 years ago )
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

#define MAX 50

void Input(int &n);
void IniArray(int a[], int n);
void OutputArray(int a[], int n);
void Average(int a[], int n);
int FindMax(int a[], int n);
void PositionMin(int a[], int n);
int CounterSCP(int a[], int n);
void OutputPrime(int a[], int n);
int Prime(int x);
void ChangeNegativeToZero(int a[], int n);
void DeleteNegativeElement(int a[], int &n);
void SelectionSort(int a[], int n);
void Swap(int &x, int &y);

int main(){
	srand(time(0));
	int a[MAX];
	int n;
	Input(n);

	//Khởi tạo mảng
	IniArray(a, n);

	printf("\nXuat Mang Ban Dau\n\n");
	OutputArray(a, n);

	//Tính trung bình các số lẻ tại vị trí chẵn
	Average(a, n);

	//Tìm số lớn nhất trong mảng;
	//Thực ra thích làm theo cách sắp xếp rồi xuất giá trị a[n - 1] hơn
	//Nhưng vì làm theo đề nên làm cách này, cuối cùng mới sắp xếp
	int max = FindMax(a, n);
	printf("\n\nGia tri lon nhat trong mang: %d", max);

	//Tìm vị trí của giá trị min
	PositionMin(a, n);

	//Đếm các số chính phương
	int counterSCP = CounterSCP(a, n);
	printf("\n\nTrong mang co tat ca %d so chinh phuong", counterSCP);

	//Hiển thị các số nguyên tố
	OutputPrime(a, n);

	//Muốn hiển thị kết quả bài 6 thì phải comment bài 7 và ngược lại
	//Bài 6: thay thế các phần tử âm bằng 0
	ChangeNegativeToZero(a, n);

	//Bài 7: xóa các phần tử âm trong mảng
	/*DeleteNegativeElement(a, n);*/

	//Hiển thị lại mảng sau khy thay đổi
	/*printf("\n\nMang sau khy thay doi: ");*/
	printf("\n\nMang sau khy thay doi\n\n");
	OutputArray(a, n);

	//Sắp xếp lại mảng
	SelectionSort(a, n);

	//Hiển thị lại mảng sau khy sắp xếp
	/*printf("\n\nMang sau khy sap xep: ");*/
	printf("\n\nMang sau khy sap lai\n\n");
	OutputArray(a, n);

	getch();
	return 0;
}

void Input(int &n){
	do{
		printf("Nhap so luong phan tu cua mang: ");
		scanf("%d", &n);
	}while(n < 1 || n > MAX);
}

void IniArray(int a[], int n){
	for(int i = 0; i < n; ++i){
		a[i] = -50 + rand() % 101;
	}
}

void OutputArray(int a[], int n){
	for(int i = 0; i < n; ++i){
		printf("%d\t", a[i]);
	}
}

void Average(int a[], int n){
	int sum = 0, counter = 0;
	for(int i = 1; i < n; i += 2){    //Vì vị trí = chỉ số + 1
		if(a[i] % 2 == 1){
			sum += a[i];
			++counter;
		}
	}
	
	if(counter == 0){
		printf("\n\nKhong co gia tri le nao o vi tri chan");
	}else{
		double average = (sum * 1.0) / counter;
		printf("\n\nTrung binh cac so le o vi tri chan = %.2lf", average);
	}
}

int FindMax(int a[], int n){
	int max = a[0];
	for(int i = 1; i < n; ++i){
		if(max < a[i]){
			max = a[i];
		}
	}
	return max;
}

void PositionMin(int a[], int n){
	int min = a[0];
	for(int i = 1; i < n; ++i){
		if(min > a[i]){
			min = a[i];
		}
	}

	printf("\n\nCac vi tri cua gia tri min: ");
	for(int i = 0; i < n; ++i){
		if(a[i] == min){
			printf("%d\t", i + 1);  //Vị trí = chỉ số + 1;
		}
	}
}

int CounterSCP(int a[], int n){
	int counter = 0;
	for(int i = 0; i < n; ++i){
		if((int)sqrt((double)a[i]) == sqrt((double)a[i])){
			++counter;
		}
	}
	return counter;
}

void OutputPrime(int a[], int n){
	printf("\n\nCac so nguyen to co trong mang: ");
	for(int i = 0; i < n; ++i){
		if(Prime(a[i])){
			printf("%d\t", a[i]);
		}
	}
}

int Prime(int x){
	if(x < 2){
		return 0;
	}else if(x > 3){
		if(x % 2 == 0){
			return 0;
		}else{
			for(int i = 3; i <= sqrt((double) x); i += 2){
				if(x % i == 0){
					return 0;
				}
			}
		}
	}
	return 1;
}

void ChangeNegativeToZero(int a[], int n){
	for(int i = 0; i < n; ++i){
		if(a[i] < 0){
			a[i] = 0;
		}
	}
}

void DeleteNegativeElement(int a[], int &n){
	for(int i = 0; i < n; ++i){
		if(a[i] < 0){
			for(int j = i + 1; j < n; ++j){
				a[j - 1] = a[j];
			}
			--n;
			--i;
		}
	}
}

void SelectionSort(int a[], int n){
	int min;
	for(int i = 0; i < n - 1; ++i){
		min = i;
		for(int j = i + 1; j < n; ++j){
			if(a[min] > a[j]){
				min = j;
			}
		}
		Swap(a[i], a[min]);
	}
}

void Swap(int &x, int &y){
	int temp = x;
	x = y;
	y = temp;
}

 

Revise this Paste

Your Name: Code Language: