Code: Select all
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
long int index,i,a,num,x,sum,res[10000]={0},dum,tot,flag;
char ish[10000],temp[10000];
void main()
{
// freopen("h:\\392.txt","r",stdin);
// freopen("h:\\out.txt","w",stdout);
while(gets(ish))
{
x=strlen(ish);
i=-1;index=-1;dum=0;
while(i<x)
{
i++;
sum=-1;
while(ish[i]!=' ' && i<x)
{
while(ish[i]>=48 && ish[i]<=57)
{
temp[sum=sum+1]=ish[i];
i++;
}
if(ish[i]!='-')
{
temp[sum=sum+1]=NULL;
sum=-1;
tot=atol(temp);
if(ish[a]!='-')
res[index=index+1]=tot;
if(ish[a]=='-')
{
res[index=index+1]=-tot;
a=-1;
}
}
if(ish[i]=='-')
{
a=i;
i++;
}
}
}
flag=0;
for(i=0;i<=index;i++)
{
if(res[i]>0)
{
if(i>0 && flag==1)
printf("+ ");
if(res[i]!=1)
{
printf("%ld",res[i]);
flag=1;
}
if(index-i!=0)
{
printf("x");
if(index-i>1)
{
printf("^%ld",index-i);
if(i<index)
printf(" ");
}
if(index-i==1)
{
if(i<index)
printf(" ");
}
flag=1;
}
if(index-i==0 && res[i]==1)
{
printf("1");
if(i<index)
printf(" "); // ----confusion for extra space for end of line
flag=1;
}
}
if(res[i]<0)
{
if(flag==1)
printf("- ");
if(flag==0)
printf("-");
res[i]=-res[i];
if(res[i]!=1)
printf("%ld",res[i]);
if(index-i!=0)
{
printf("x");
if(index-i>1)
{
printf("^%ld",index-i);
if(i<index)
printf(" "); //--confusion for extra space for end of line
}
if(index-i==1)
{
if(i<index)
printf(" "); //--confusion for extra space for end of line
}
flag=1;
}
if(index-i==0 && res[i]==1)
{
printf("1");
if(i<index)
printf(" "); // --confusion for extra space for end of line
}
flag=1;
}
if(res[i]==0)
{
dum++;
if(dum==index+1)
{
printf("0");
flag=1;
break;
}
}
}
printf("\n");
}
}
when output is end ex...5x^2(no space acceptable)for this out put input is 0 0 0 0 0 0 5 0 0