ปัญหา
เขียนโปรแกรม C เพื่อค้นหาประเภทอาร์เรย์ที่เราต้องตรวจสอบ ไม่ว่าองค์ประกอบที่กำหนดในอาร์เรย์จะเป็นตัวเลขคู่หรือเลขคี่ หรือทั้งสองอย่างรวมกันโดยใช้พอยน์เตอร์
วิธีแก้ปัญหา
ผู้ใช้ต้องป้อนอาร์เรย์ของจำนวนเต็ม จากนั้นจึงแสดงประเภทของอาร์เรย์
ตัวอย่างที่ 1 − อินพุต:5 3 1, เอาต์พุต:อาร์เรย์คี่
ตัวอย่างที่ 2 − อินพุต:2 4 6 8, เอาต์พุต:อาร์เรย์คู่
ตัวอย่างที่ 3 − อินพุต:1 2 3 4 5, เอาต์พุต:อาร์เรย์แบบผสม
อัลกอริทึม
อ้างถึงอัลกอริทึมที่ระบุด้านล่างเพื่อค้นหาประเภทอาร์เรย์ที่ผู้ใช้ป้อนโดยใช้พอยน์เตอร์
ขั้นตอนที่ 1:อ่านขนาดของอาร์เรย์ที่รันไทม์
ขั้นตอนที่ 2:ป้อนองค์ประกอบอาร์เรย์
ขั้นตอนที่ 3:ประกาศตัวแปรตัวชี้
ขั้นตอนที่ 3:ตรวจสอบว่าองค์ประกอบทั้งหมดของอาร์เรย์เป็นเลขคี่โดยใช้ตัวแปรตัวชี้หรือไม่
จากนั้นพิมพ์ "คี่"
ขั้นตอนที่ 4:ตรวจสอบว่าองค์ประกอบทั้งหมดของอาร์เรย์เป็นแบบคู่โดยใช้ตัวแปรตัวชี้หรือไม่
จากนั้นพิมพ์ "คู่"
ขั้นตอนที่ 5:มิฉะนั้น พิมพ์ "ผสม"
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรม C เพื่อค้นหาประเภทอาร์เรย์ที่ผู้ใช้ป้อนโดยใช้พอยน์เตอร์ -
#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; }
ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -
Enter the size of array 4 Enter the elements of array 12 14 16 18 The array type is Even