Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C เพื่อลบองค์ประกอบอาร์เรย์โดยใช้ Pointers


ปัญหา

เขียนโปรแกรม C เพื่อลบองค์ประกอบออกจากอาร์เรย์เมื่อรันไทม์โดยผู้ใช้และผลลัพธ์ที่จะแสดงบนหน้าจอหลังจากลบ หากองค์ประกอบที่ถูกลบไม่อยู่ในอาร์เรย์ เราต้องแสดงอินพุตที่ไม่ถูกต้อง

วิธีแก้ปัญหา

อาร์เรย์ใช้เพื่อเก็บกลุ่มขององค์ประกอบทั่วไปภายใต้ชื่อเดียว

การทำงานของอาร์เรย์มีดังนี้ −

  • แทรก
  • ลบ
  • ค้นหา

อัลกอริทึม

อ้างอิงอัลกอริธึมเพื่อลบองค์ประกอบในอาร์เรย์โดยใช้พอยน์เตอร์

ขั้นตอนที่ 1 - ประกาศและอ่านจำนวนองค์ประกอบ

ขั้นตอนที่ 2 - ประกาศและอ่านขนาดอาร์เรย์ที่รันไทม์

ขั้นตอนที่ 3 - ป้อนองค์ประกอบอาร์เรย์

ขั้นตอนที่ 4 - ประกาศตัวแปรตัวชี้

ขั้นตอนที่ 5 - จัดสรรหน่วยความจำแบบไดนามิกที่รันไทม์

ขั้นตอนที่ 6 - ป้อนองค์ประกอบที่จะลบ

ขั้นตอนที่ 7 – หลังจากลบ องค์ประกอบจะถูกเลื่อนไปทางซ้ายหนึ่งตำแหน่ง

ตัวอย่าง

ขนาดของอาร์เรย์คือ:5

องค์ประกอบอาร์เรย์มีดังนี้ -

1 2 3 4 5

ป้อนตำแหน่งองค์ประกอบที่จะลบ:4

ผลลัพธ์จะเป็นดังนี้ −

After deletion the array elements are:
1 2 3 5

ตัวอย่าง

ต่อไปนี้เป็นโปรแกรม C เพื่อแทรกองค์ประกอบลงในอาร์เรย์โดยใช้พอยน์เตอร์ -

#include<stdio.h>
#include<stdlib.h>
void delete(int n,int *a,int pos);
int main(){
   int *a,n,i,pos;
   printf("enter the size of array:");
   scanf("%d",&n);
   a=(int*)malloc(sizeof(int)*n);
   printf("enter the elements:\n");
   for(i=0;i<n;i++){
      scanf("%d",(a+i));
   }
   printf("enter the position of element to be deleted:");
   scanf("%d",&pos);
   delete(n,a,pos);
   return 0;
}
void delete(int n,int *a,int pos){
   int i,j;
   if(pos<=n){
      for(i=pos-1;i<n;i++){
         j=i+1;
         *(a+i)=*(a+j);
      }
      printf("after deletion the array elements is:\n");
      for(i=0;i<n-1;i++){
         printf("%d\n",(*(a+i)));
      }
   }
   else{
      printf("Invalid Input");
   }
}

ผลลัพธ์

เมื่อโปรแกรมข้างต้นทำงาน มันจะสร้างผลลัพธ์ต่อไปนี้ -

enter the size of array:5
enter the elements:
12
34
56
67
78
enter the position of element to be deleted:4
After deletion the array elements are:
12
34
56
78