program to find the second largest word in a paragraph
amongst all words that repeat more thn twice
Answer Posted / kiran kumar
Hi Pavani,
My name is Kiran.
Iam posting the code for ur Question.
The code is given below.
/* Program to find the second larges word in a paragraph
amongst all words that repeat more than twice */
# include <stdio.h>
# include <stdlib.h>
int main(void)
{
char para[80],*temp1=NULL,*temp=NULL,*first_high,*second_high;
unsigned int first_high_len,second_high_len;
printf("Enter the Paragraph\n");
fgets(para,80,stdin);
temp=strchr((const char*) para, (int)' ');
temp=para;
temp=strchr((const char*)para,(int)' '); /* Assuming
first word as the first highest
word
and storing word and the number of
letters of that word */
first_high_len=temp-para;
first_high=malloc(first_high_len+1);
strncpy(first_high, (const char*) para, first_high_len);
*(first_high+first_high_len)='\0';
temp1=strchr((const char*)temp+1,(int)' '); /* Assuming
second word as the second highest
word
and storing the word and the number of
letters of that word */
second_high_len=temp1-temp-1;
second_high=malloc(second_high_len+1);
strncpy(second_high, (const char*) temp+1, second_high_len);
*(second_high+second_high_len)='\0';
while(1)
{
temp1=strchr((const char*)temp+1,(int)' ');
if(temp1 == NULL)
break;
if(temp1-temp-1 > first_high_len)
{
free(second_high);
second_high=malloc(first_high_len+1);
second_high_len=first_high_len;
strncpy(second_high, (const char*) first_high,
second_high_len);
*(second_high+second_high_len)='\0';
free(first_high);
first_high=malloc(temp1-temp);
first_high_len=temp1-temp-1;
strncpy(first_high, (const char*) temp+1, first_high_len);
*(first_high+first_high_len)='\0';
}
else if(second_high_len < (temp1-temp-1) && first_high_len
!= (temp1-temp-1))
{
free(second_high);
second_high=malloc(temp1-temp);
second_high_len=temp1-temp-1;
strncpy(second_high, (const char*) temp1+1, second_high_len);
*(second_high+second_high_len)='\0';
}
temp=temp1;
}
if(strlen((const char*)temp+1) > first_high_len)
{
free(second_high);
second_high=first_high;
first_high=temp+1;
}
else if(strlen((const char*)temp+1) > second_high_len &&
strlen((const char*)temp+1) != first_high_len)
{
free(second_high);
second_high=temp+1;
}
printf("\nFirst Highest word = %s , Len =
%d",first_high,first_high_len);
printf("\nSecond Highest word = %s , Len = %d",second_high,
second_high_len);
return 0;
}
Check this code if u have any queries please be free
to ask any queries.
Email : kirjony@gmail.com
| Is This Answer Correct ? | 7 Yes | 2 No |
Post New Answer View All Answers
What are the string functions? List some string functions available in c.
Write a C program in Fibonacci series.
What does stand for?
What is the most efficient way to count the number of bits which are set in an integer?
What is double pointer in c?
If null and 0 are equivalent as null pointer constants, which should I use?
How to draw the flowchart for structure programs?
Explain what header files do I need in order to define the standard library functions I use?
Can a pointer be volatile in c?
Can math operations be performed on a void pointer?
What are c preprocessors?
a parameter passed between a calling program and a called program a) variable b) constant c) argument d) all of the above
Is it acceptable to declare/define a variable in a c header?
Why is c called c?
Explain what is meant by high-order and low-order bytes?