Program 261: Program to print Frequency of digits in an Array
Output:
#include<stdio.h>
main()
{
int i,n,num,k,frequency[10],flag=0;
for(i=0;i<10;i++)
{
frequency[i]=0;
}
printf("Enter number of elements in an array\n");
scanf("%d",&n);
int a[n];
printf("Enter numbers\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
//for incrementing occured number
num=a[i];
while(num>0)
{
k=num%10;
frequency[k]++;
num=num/10;
}
}
for(i=0;i<10;i++)
{
if(frequency[i]!=0)
{
flag=1;
printf("%d occured %d times\n",i,frequency[i]);
}
}
if(flag==0)
{
printf("No elements repeated\n");
}
}
To know the frequency of each character in senetenceExplanation:
- The Program Starts with intializing
- i,k,num→ Temporary variables
- n→ To store number of elements
- frequency → To store frequency of digits
- flag→ used as boolean variable
- a → To store Array elements
- i,k,num→ Temporary variables
for(i=0;i<10;i++) { frequency[i]=0; }By defaults all the frequency of digits are assigned to zero like frequency[0],frequency[1]...=0printf("Enter number of elements in an array\n"); scanf("%d",&n);To Take how many elements user is going to enter as input.for(i=0;i<n;i++) { scanf("%d",&a[i]); //for incrementing occured number num=a[i]; while(num>0) { k=num%10; frequency[k]++; num=num/10; } }While taking input we are storing the number in dummy variable 'num' and splitting each digit using while loop from which we are calculating frequency of digits.For Example:- We Entered 2556 then, num=256.Lets run the while loop and check how its doing this
- Iteration 1: As num=2556 and 2556>0,which is true so while loop executes
- k=2556%10=6
- frequency[k]++→ frequency[6]++→ frequency[6]=1
- num=num/10→ 2556/10=255,So num=255 Now.
- Finally frequency[6]=1,num=255
- Iteration 2: num=255 and 255>0,which is true so while loop executes
- k=255%10=5
- frequency[k]++→ frequency[5]++→ frequency[5]=1
- num=num/10→ 255/10=25,So num=25.
- Finally frequency[6]=1,frequency[5]=1,num=25
- Iteration 3: num=2 and 2>0,which is true so while loop executes
- k=2%10=2
- frequency[k]++→ frequency[2]++→ frequency[2]=1
- num=num/10→ 2/10=0,So num=0.(remember num is integer not float)
- Finally frequency[6]=1,frequency[5]=2,frequency[2]=1,num=0
- Iteration 3: num=0 and 0>0,which is false so while loop terminates
- Finally we got frequency of first Number 2556 and the frequency is
frequency[6]=1,frequency[5]=2,frequency[2]=1
- Iteration 1: As num=2556 and 2556>0,which is true so while loop executes
- We Entered 2556 then, num=256.Lets run the while loop and check how its doing this
for(i=0;i<10;i++) { if(frequency[i]!=0) { flag=1; printf("%d occured %d times\n",i,frequency[i]); } }Finally if frequency of a particular digit is not zero (which was assigned to zero by default) is printed as 6 occured 1 times,5 occured 2 times,2 occured 1 times
Output:


