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