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: