Vấn đề
Viết chương trình C để tìm kiểu mảng mà chúng ta cần kiểm tra, xem các phần tử đã cho trong mảng là số chẵn hay số lẻ hoặc kết hợp của cả hai bằng cách sử dụng con trỏ.
Giải pháp
Người dùng phải nhập một mảng số nguyên, sau đó hiển thị kiểu của mảng.
Ví dụ 1 - Đầu vào:5 3 1, Đầu ra:mảng lẻ
Ví dụ 2 - Đầu vào:2 4 6 8, Đầu ra:mảng chẵn
Ví dụ 3 - Đầu vào:1 2 3 4 5, Đầu ra:mảng hỗn hợp
Thuật toán
Tham khảo thuật toán đưa ra bên dưới để tìm kiểu mảng do người dùng nhập với sự trợ giúp của con trỏ.
Bước 1:Đọc kích thước của mảng trong thời gian chạy.
Bước 2:Nhập các phần tử của mảng.
Bước 3:Khai báo biến con trỏ.
Bước 3:Kiểm tra xem tất cả các phần tử của mảng có lẻ hay không bằng cách sử dụng biến con trỏ.
Sau đó, in "Odd".
Bước 4:Kiểm tra xem tất cả các phần tử của mảng có bằng nhau hay không bằng cách sử dụng biến con trỏ.
Sau đó, in "Chẵn".
Bước 5:Khác, in "Hỗn hợp".
Ví dụ
Sau đây là chương trình C để tìm kiểu mảng do người dùng nhập với sự trợ giúp của con trỏ -
#include<stdio.h> #include<stdlib.h> int*createArray (int); void readArray(int,int *); int findType(int , int *); int main(){ int *a,n,c=0,d=0; printf("Enter the size of array\n"); scanf("%d",&n); printf("Enter the elements of array\n"); createArray(n); readArray(n,a); findType(n,a); return 0; } int *createArray(int n){ int *a; a=(int*)malloc(n*sizeof(int)); return a; } void readArray(int n,int *a){ for(int i=0;i<n;i++){ scanf("%d",a+i); }} int findType(int n, int *a){ int c=0,d=0; for(int i=0;i<n;i++){ if(a[i]%2==0){ c++; } else{ d++; }} if(c==n){ printf("The array type is Even\n"); } if(d==n){ printf("The array type is Odd\n"); } if(c!=n && d!=n){ printf("The array type is Mixed\n"); } return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Enter the size of array 4 Enter the elements of array 12 14 16 18 The array type is Even