Witam wszystkich!!! Jestem nowy na forum i początkujący programista. Mam zrobić program do szkoły wykonujący działania na wielomianach. Wszystko jest już OK oprócz jednego błędu. Mianowicie gdy pierwszy wielomian jest mniejszy od drugiego nie przepisuje mi większych wartości z drugiego. Oto kod:
#include <string>
#include <iostream>
using namespace std;
void wynik2(int tablica2[],int tablica[],int n, int m)
{
if (tablica<tablica2)
{
for (int i=m; i>n; --i)
{
if(tablica2[i]>=0)
cout<<"+"<<tablica2[i]<<"x^"<<i<<" ";
else
cout<<tablica2[i]<<"x^"<<i<<" ";
}
}
else
{
for (int i=n; i>m; --i)
{
if(tablica[i]>=0)
cout<<"+"<<tablica[i]<<"x^"<<i<<" ";
else
cout<<tablica[i]<<"x^"<<i<<" ";
}
}
}
void wynik (int tabnew[],int tablica2[],int tablica[],int n) //wypisuje wynik
{
for ( int i=n; i>1; --i)
if(tabnew[i]>=0)
cout<<"+"<<tabnew[i]<<"x^"<<i<<" ";
else
cout<<tabnew[i]<<"x^"<<i<<" ";
if(tabnew[1]>=0)
cout<<"+"<<tabnew[1]<<"x"<<" ";
else
cout<<tabnew[1]<<"x"<<" ";
if(tabnew[0]>=0)
cout<<"+"<<tabnew[0];
else
cout<<tabnew[0];
}
int main()
{
int stopien; //tworzy pierwszy wielomian
cout<<"Program wykonujacy dzialania na wielomianach:\n";
cout<<"Podaj stopien wielomianu pierwszego: ";
cin >>stopien;
int tablica[stopien];
for (unsigned int i = 0; i < stopien-1; ++i)
{
cout <<"Podaj wyraz "<<i+1<<". (x^"<<stopien-i<<"): ";
cin >>tablica[stopien-i];
}
cout<<"Podaj wyraz "<<stopien<<". (x) : ";
cin>>tablica[1];
cout<<"Podaj wyraz "<<stopien+1<<". : ";
cin>>tablica[0];
int stopien2; //tworzy drugi wielomian
cout <<"Podaj stopien wielomianu drugiego: ";
cin >>stopien2;
int tablica2[stopien2];
for (unsigned int i = 0; i < stopien2-1; ++i)
{
cout <<"Podaj wyraz "<<i+1<<". (x^"<<stopien2-i<<"): ";
cin >>tablica2[stopien2-i];
}
cout<<"Podaj wyraz "<<stopien2<<". (x) : ";
cin>>tablica2[1];
cout<<"Podaj wyraz "<<stopien2+1<<". : ";
cin>>tablica2[0];
int max = 0;
int sum = stopien+stopien2;
if (stopien>stopien2)
max=stopien;
else
max=stopien2;
cout<<"Suma wielomianow:\n";
int tablica3[max];
for ( int i = 0; i <=stopien ; ++i)
tablica3[i]=tablica[i]+tablica2[i];
if (tablica!=tablica2)
wynik2(tablica2,tablica,stopien,stopien2);
if (tablica>tablica2)
wynik(tablica3,tablica2,tablica,stopien2);
else
wynik(tablica3,tablica2,tablica,stopien);
cout<<"\n";
cout<<"Roznica wielomianow:\n";
int tablica4[max];
for ( int i = 0; i <=stopien ; ++i)
tablica4[i]=tablica[i]-tablica2[i];
if (tablica!=tablica2)
wynik2(tablica2,tablica,stopien,stopien2);
if (tablica>tablica2)
wynik(tablica4,tablica2,tablica,stopien2);
else
wynik(tablica4,tablica2,tablica,stopien);
cout<<"\n";
cout<<"Iloczyn wielomianow:\n";
int tablica5[sum];
for(int k=0; k<=sum; k++)
{
int s=0;
int u=k-stopien2;
if(u<0) u=0;
int v;
if(stopien<k) v=stopien;
else v=k;
for(int j=u; j<=v; j++)
{
s=s+tablica[j]*tablica2[k-j];
tablica5[k]=s;
}
}
wynik(tablica5,tablica2,tablica,sum);
cout<<"\n";
cout<<"Iloraz wielomianow:\n";
//system("pause");
return 0;
}