Untitled

 avatar
unknown
plain_text
2 years ago
1.8 kB
7
Indexable
#include<stdio.h>

int print(int p, int e, int idx){
    char x[10];
    if      (e==0)  sprintf(x,"");
    else if (e==1)  sprintf(x,"x");
    else            sprintf(x,"x^%d",e);

    if(idx==0) { // first
        if(e==0) {
            if      (p== 1) printf("1");
            else if (p== 0) printf("0");
            else if (p==-1) printf("-1");
            else            printf("%d",p);
        }
        else{
            if      (p== 1) printf("%s",x);
            else if (p== 0) printf("0");
            else if (p==-1) printf("-%s",x);
            else            printf("%d%s",p,x);
        }
    } else {
        if(e==0) {
            if      (p>  1) printf(" + %d%s",p,x);
            else if (p== 1) printf(" + 1");
            else if (p== 0) ; // impossible
            else if (p==-1) printf(" - 1");
            else            printf(" - %d%s",-p,x);
        } else {
            if      (p>  1) printf(" + %d%s",p,x);
            else if (p== 1) printf(" + %s",x);
            else if (p== 0) ;
            else if (p==-1) printf(" - %s",x);
            else            printf(" - %d%s",-p,x);
        }
    }
}

int main() {
    int a[9];
    int i;
    while(scanf("%d%d%d%d%d%d%d%d%d",&a[8],&a[7],&a[6],&a[5],&a[4],&a[3],&a[2],&a[1],&a[0])!=EOF) {
        int p[9]; //polyn
        int e[9]; //exp
        int pos=0;
        for(i=8;i>=0;i--){
            if(a[i]!=0 || (i==0 && pos==0) ){
                p[pos]=a[i];
                e[pos]=i;
                pos++;
            }
        }
        for(i=0;i<pos;++i) {
            //printf("(%d %d) ", p[i], e[i]);
            print(p[i], e[i], i);
        }
        printf("\n");
    }
    return 0;
}





Editor is loading...
Leave a Comment