You are on page 1of 6

1. Write a procedure that transforms the input array a0 , a1 ,...

, an −1 into output array


b0 , b1 ,..., bn −1 , where
b0 = a0 + a1
b1 = a1 + a2
.
.
bn−1 = an −1 + a0
#include "stdio.h"
#define Max 100
void change(int *p,int *q,int n)
{
int i;
for(i=0;i<n-1;i++)
*(q+i)=*(p+i)+*(p+i+1);
*(q+i)=*(p+i)+*p;
}
void enterArray(int x[], int n)
{
printf("Enter the array:\n");
int i;
for (i=0; i<n; i++)
scanf("%d",&x[i]);
}
void printArray(int x[], int n)
{
int i;
for (i=0; i<n; i++)
printf("%d ",x[i]);
printf("\n");
}
void main()
{
int i;int n;
int a[Max],b[Max];

printf("How many elements: ");


scanf("%d",&n);
enterArray(a,n);
change(a,b,n);
printf("The entered array:\n");
printArray(a,n);
printf("The new array is:\n");
printArray(b,n);
printf("\n");
}
2. Write a procedure that deletes all elements in one array that occur more than once. Test
the procedure. If my input array is:
A: 15, 31, 23, 15, 75, 23, 41, 15, 31, 85 with length 10, my output array is
A: 15, 31, 23, 75, 41, 85 with length 6.

#include "stdio.h"
#define MAX 100
void withoutDuplicates(int a[], int n, int *newN)
{
int i=0,j,p;
while(i<n)
{
for(j=i+1;j<n;j++)
if(a[i]==a[j])
{
for(p=j;p<n;p++)
a[p]=a[p+1];
n--;
}
if(a[i]!=a[i+1])
i++;

}
*newN=n;
}
void withoutDuplicates1(int a[], int n, int *nbd)
{
int i, j, count;
count=0;
for (i=0; i<n; i++)
{
j=0;
while ((j <= count) && (a[i] != a[j]))
j++;
if (j >count)
{
count++;
a[count]=a[i];
}
}
*nbd=count+1;
}

void main(void)
{
int i,n,nrElem, a[MAX];
printf("How many elements: ");
scanf("%d",&n);
printf("Enter the array\n");
for (i=0; i<n; i++)
scanf("%d",&a[i]);
withoutDuplicates(a,n,&nrElem);
for (i=0; i<nrElem; i++)
printf("%d ",a[i]);
}
3. Write procedures for sorting an array. (BubbleSort, and SimpleSort)

#include "stdio.h"
#define Max 100
void enterArray(int x[], int n)
{
printf("Enter the array: ");
int i;
for (i=0; i<n; i++)
scanf("%d",&x[i]);
}
void printArray(int x[], int n)
{
int i;
for (i=0; i<n; i++)
printf("%d ",x[i]);
printf("\n");
}
void swap(int *i,int *j)
{
int temp;
temp=*i;
*i=*j;
*j=temp;
}
void simpleSort(int a[], int n)
{
int i,j;
for (i=0; i<n-1; i++)
for (j=i+1; j<n; j++)
if (a[i]>a[j])
swap(&a[i],&a[j]);
}
void bubbleSort(int a[], int n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<n-i-1; j++)
if (a[j]>a[j+1])
swap(&a[j],&a[j+1]);
}
void main(void)
{
int a[Max], b[Max];
int n,k,l,c;
printf("Enter n: "); scanf("%d",&n);
enterArray(a,n);
printf("Input : \n");
printArray(a,n);
printf("Which method?\n1: SimpleSort, 2: BubbleSort\n");
scanf("%d",&c);
switch (c)
{
case 1: simpleSort(a,n);
break;
case 2: bubbleSort(a,n);
break;
default: printf("Invalid number\n");
}
printf("Output: \n");
printArray(a,n);
}

4. Write a procedure for linearly and binary searching a vector. Then write a program that
tests these procedures.

#include "stdio.h"
#define Max 100
void enterArray(int x[], int n)
{
printf("Enter the array:\n");
int i;
for (i=0; i<n; i++)
scanf("%d",&x[i]);
}
void printArray(int x[], int n)
{
int i;
for (i=0; i<n; i++)
printf("%d ",x[i]);
printf("\n");
}
int linearSearch(int a[], int n, int key)
{
int i, lb;
lb=0;
i=0;
while (!lb && (i<n))
{
if (a[i]==key)
{
lb=i;
return lb;
}
i++;
}
return -1;
}
int linearSearch1(int a[], int n, int key)
{
int i;
i=0;
a[n]=key; // We add guard, so we can know when we finished all elements
while (a[i] != key)
i++;
if (i==n)
return -1;
else
return i;
}
int binarySearch(int a[], int n, int key)
{
int start,end,middle, found;
start=0;
end=n-1;
found=0;
while (!found && (start <= end))
{
middle=(start+end)/2;
if (key < a[middle])
end=middle-1;
else if (key > a[middle])
start=middle+1;
else // key==a[middle]
found=1;
}
if (found)
return middle;
else
return -1;
}
void main()
{
int a[Max];
int n,k,l;
printf("Enter n: "); scanf("%d",&n);
enterArray(a,n);
printf("Entered array: \n");
printArray(a,n);
printf("What to look? "); scanf("%d",&k);
//l=binarySearch(a,n,k); // the array has to be sorted
l=linearSearch(a,n,k);
//l=linearSearch1(a,n,k);
if (l==-1)
printf("The element is not found\n");
else
printf("The element is found on position %d\n",l);
}

5. Write procedures for entering and printing an array. Also write a procedure that finds all of the
elements of the array that are dividable by some element that is input from keyboard. Test the
procedures.

#include "stdio.h"
#define Max 100
void enterArray(int x[], int n)
{
printf("Enter the array: ");
int i;
for (i=0; i<n; i++)
scanf("%d",&x[i]);
}
void printArray(int x[], int n)
{
int i;
for (i=0; i<n; i++)
printf("%d ",x[i]);
printf("\n");
}
int divWithNum(int *p, int n, int div)
{
int count=0,i=0,*d=p;
while(i<n)
{
if((*p%div)==0)
break;
p++,i++;
}
if(i==n)
{
printf("There are no such elements.\n");
return 0;
}
else
p=d;
printf("Elements that are dividable by %d are:\n",div);
for(i=0;i<n;i++)
{
if((*p%div)==0)
{
printf("%d\t",*p);
count++;
}
p++;
}
return count;
}
void main()
{
int a[100],n,i,div,count;
printf("Enter n: "); scanf("%d",&n);
enterArray(a,n);
printf("Entered array: \n");
printArray(a,n);
printf("Enter divisor: "); scanf("%d",&div);
if(div==0)
{
printf("Error! Division by 0.");
return;
}
count=divWithNum(a,n,div);
if(count!=0)
printf("There are %d total elements.\n",count);

You might also like