Last active
July 22, 2021 15:11
-
-
Save nhatminhbui/26daac60c33970f409b6cdbc35f16ea3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bùi Minh Nhật | 201A290002 | Tối thứ 5 | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <stdbool.h> | |
#include <math.h> | |
int SumEven(int**, int, int); | |
bool IsPrime(int); | |
int CountPrime(int**, int, int); | |
bool IsPowerOfTwo(int); | |
int FindMax(int**, int, int); | |
int main() { | |
int m, n; | |
printf("Nhap so hang m: "); scanf("%d\n", &m); | |
printf("Nhap so cot n: "); scanf("%d\n", &n); | |
// dynamically create array of pointers of size m | |
int **A = (int **)malloc(m * sizeof(int *)); | |
// dynamically allocate memory of size n for each row | |
for (int r = 0; r < m; r++) { | |
A[r] = (int *)malloc(n * sizeof(int)); | |
} | |
for (int r = 0; r < m; r++) { | |
for (int c = 0; c < n; c++) { | |
printf("Nhap phan tu A[%d][%d]: ", r, c); | |
scanf("%d\n", &A[r][c]); | |
} | |
} | |
printf("Phan tu lon nhat la %d\n", FindMax(A, m, n)); | |
printf("Tong cac phan tu chan la %d\n", SumEven(A, m, n)); | |
printf("So luong so nguyen to la %d\n", CountPrime(A, m, n)); | |
printf("Vi tri co phan tu la luy thua cua 2:\n"); | |
for (int r = 0; r < m; r++) { | |
for (int c = 0; c < n; c++) { | |
if (IsPowerOfTwo(A[r][c])) printf("[%d][%d]\n", r, c); | |
} | |
} | |
free(A); | |
return 0; | |
} | |
int SumEven(int **matrix, int m, int n) { | |
int sum = 0; | |
for (int r = 0; r < m; r++) { | |
for (int c = 0; c < n; c++) { | |
if (matrix[r][c] % 2 == 0) sum += matrix[r][c]; | |
} | |
} | |
return sum; | |
} | |
bool IsPrime(int n) { | |
if (n == 1) return false; | |
if (n == 2) return true; | |
for (int i = 2; i <= sqrt(n); i++) { | |
if (n % i == 0) return false; | |
} | |
return true; | |
} | |
int CountPrime(int **matrix, int m, int n) { | |
int count = 0; | |
for (int r = 0; r < m; r++) { | |
for (int c = 0; c < n; c++) { | |
if (IsPrime(matrix[r][c])) count++; | |
} | |
} | |
return count; | |
} | |
bool IsPowerOfTwo(int n) { | |
if ((n != 0) && ((n&(n-1)) == 0)) return true; | |
else return false; | |
} | |
int FindMax(int **matrix, int m, int n) { | |
int max = matrix[0][0]; | |
for (int r = 0; r < m; r++) { | |
for (int c = 0; c < n; c++) { | |
if (matrix[r][c] > max) | |
max = matrix[r][c]; | |
} | |
} | |
return max; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment