Здравствуйте как сделать чтобы программа в решении выводила на экран решение в таком виде
| Цитата | 5x^2+3x+1 + 5x^2+3x+1 = 10x^2+6x+2
|
щас она выдает ответ в таком виде:
MAIN.CPP
| Код |
#include <stdio.h> #include <conio.h> #include "prot.h" void main(){ char a1[100],a2[100]; int n1,n2,n3; int i; float *p1,*p2,*p3; do{ clrscr(); printf("Введите первый полином:\n"); gets(a1); conv(a1); n1=stepen(a1); p1=new float[n1+1]; for(i=0;i<n1+1;i++)p1[i]=0; string_massiv(a1,p1); printf("Введите второй полином:\n"); gets(a2); printf("\Решение:"); conv(a2); n2=stepen(a2); p2=new float[n2+1]; for(i=0;i<n2+1;i++)p2[i]=0; string_massiv(a2,p2); print_polynom(p1,n1); printf("+"); print_polynom(p2,n2); printf("="); n3=(n1>n2?n1:n2); p3=new float[n3+1]; Slojenie(p1,n1+1,p2,n2+1,p3); print_polynom(p3,n3); delete p1; delete p2; delete p3; printf("\nЕще раз? [y\\n]? "); }while(getche()!='n'); clrscr(); }
|
PROT.H
| Код | void Slojenie(float *p1,int n1,float *p2,int n2,float *p3); void conv(char *a); void print_polynom(float *p,int n); int stepen(char *a); void string_massiv(char *a,float *p);
|
MASSIV.CPP
| Код | #include <stdio.h> void string_massiv(char *a,float *p){ int i,tn; float tp; for(i=0;a[i]!=0;) { if(a[i]=='x' || a[i+1]=='x'&&(a[i]=='+'||a[i]=='-')) if(a[i]=='x'||a[i]=='+') tp=1; else tp=-1; else sscanf(a+i,"%f",&tp); if(a[i]!='x') i++; for(;a[i]!='x'&&a[i]!='+' &&a[i]!='-' &&a[i]!=0;i++); if(a[i]=='+'||a[i]=='-'||a[i]==0)tn=0; else { if(a[i+1]=='^')sscanf(a+i+2,"%d",&tn); else tn=1; for(;a[i]!='+' &&a[i]!='-' &&a[i]!=0;i++); } p[tn]+=tp; } }
|
PR_POL.CPP
| Код | #include <string.h> #include <stdio.h> #include <math.h> void print_polynom(float*p,int n){ int i, pr=0; printf("\n"); for(i=0;i<n+1;i++) { if(fabs(p[i])>1E-5) { pr=1; if(i==0)printf("%.3g",p[i]); else if(fabs(p[i]-1)<1E-5) if(i==1) printf("+x"); else printf("x^%d",i); else if(fabs(p[i]+1)<1E-5) if(i==1) printf("-x"); else printf("-x^%d",i); else if(i==1) printf("%+.fx",p[i]); else printf("%+.fx^%d",p[i],i); } } if(pr==0)printf("0"); printf("\n"); }
|
STEPEN.CPP
| Код | #include <stdio.h> #include <string.h> int stepen(char *a){ int n=0,i,tn; for(i=0;a[i]!=0;i++) { if(a[i]=='x'&&a[i+1]=='^') { sscanf(a+i+2,"%d",&tn); if(tn>n)n=tn; } } if(n==0 && strchr(a,'x')!=NULL)n=1; return n; }
|
DEL_SYM.CPP
| Код | #include <string.h> void conv(char *a){ char delsym[]="0123456789.+-x^"; int i,j; for(i=0;a[i]!=0;) if(strchr(delsym,a[i])!=NULL) i++; else for(j=i;a[j]!=0;j++)a[j]=a[j+1]; }
|
SLOJENIE.CPP
| Код | void Slojenie(float *p1,int n1,float *p2,int n2,float *p3){ int i; for(i=0;i<n1 && i<n2;i++)p3[i]=p1[i]+p2[i]; if(i<n1) for(;i<n1;i++)p3[i]=p1[i]; if(i<n2) for(;i<n2;i++)p3[i]=p2[i]; }
|
|