Practice pointer arithmetic Change the following C code with array indexing to u
ID: 3549623 • Letter: P
Question
Practice pointer arithmetic
Change the following C code with array indexing to using pointer arithmetic:
#include<stdio.h>
#include<conio.h>
void read(int c[],int);
void display(int d[],int);
void inverse(int x[],int);
void main()
{
int a[6],i;
read(a,6);
display(a,6);
inverse(a,6);
display(a,6);
getch();
}
void read(int c[],inti)
{
int j;
printf("Enter six element for an array ");
for(j=0;j<i;j++)
scanf("%d",&c[j]);
}
void display(int d[],inti)
{
int j;
printf("Element in array are : ");
for(j=0;j<i;j++)
printf("%d ",d[j]);
printf(" ");
}
void inverse(int x[],int k)
{
inti,temp;
k--;
for(i=0;i<(k/2);i++)
{
temp=x[i];
x[i]=x[k];
x[k]=temp;
k--;
}
}
Explanation / Answer
Dear,
The following isa the modified code using pointer notation:
void read(int *c,int);
void display(int *d,int);
void inverse(int *x,int);
void main()
{
int a[6],i;
read(a,6);
display(a,6);
inverse(a,6);
display(a,6);
getch();
}
void read(int c[],int i)
{
int j;
printf("Enter six element for an array ");
for(j=0;j<i;j++)
scanf("%d",&*(c+j));
}
void display(int *d,int i)
{
int j;
printf("Element in array are : ");
for(j=0;j<i;j++)
printf("%d ",*(d+j));
printf(" ");
}
void inverse(int *x,int k)
{
int i,temp;
k--;
for(i=0;i<(k/2);i++)
{
temp=*(x+i);
*(x+i)=*(x+k);
*(x+k)=temp;
k--;
}
}
Sample Run:
Enter six element for an array
1
2
3
4
5
6
Element in array are :
1 2 3 4 5 6
Element in array are :
6 5 3 4 2 1
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.