ปัญหา
เขียนโปรแกรม 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