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
How can a program be made to print the name of a source file where an error occurs?
How arrays can be passed to a user defined function
What are the types of unary operators?
Why should I prototype a function?
What is ## preprocessor operator in c?
Why c is called a mid level programming language?
What happens if you free a pointer twice?
What are the different types of errors?
What are the benefits of organizational structure?
Why #include is used in c language?
How can I call a function with an argument list built up at run time?
What will the preprocessor do for a program?
what do you mean by enumeration constant?
Are global variables static in c?
What is function prototype in c language?