C++ Bc. 13 cpp: Porovnání verzí
Bez shrnutí editace |
mBez shrnutí editace |
||
| (Není zobrazeno 7 mezilehlých verzí od 2 dalších uživatelů.) | |||
| Řádek 1: | Řádek 1: | ||
[ [[C | #include <iostream> | ||
#include <vector> | |||
double polynom(double x, const std::vector<double>& a); | |||
void soucet (const std::vector<double>& q, const std::vector<double>& r, | |||
std::vector<double>& p); | |||
int main() | |||
{ | |||
using namespace std; | |||
vector<double> p; | |||
p.push_back(9); | |||
p.push_back(2); | |||
p.push_back(5); | |||
p.push_back(2); | |||
p.push_back(7); | |||
for (double x=0; x<1.05; x+=0.1) | |||
{ | |||
cout << x << "\t" << polynom(x, p) << endl; | |||
} | |||
cout << endl; | |||
vector<double> q, r; | |||
q.push_back( 3); | |||
q.push_back(-1); | |||
q.push_back( 2); | |||
r.push_back(6); | |||
r.push_back(3); | |||
r.push_back(3); | |||
r.push_back(2); | |||
r.push_back(7); | |||
soucet(q, r, p); | |||
for (double x=0; x<1.05; x+=0.1) | |||
{ | |||
cout << x << "\t" << polynom(x, p) << endl; | |||
} | |||
} | |||
double polynom(double x, const std::vector<double>& a) | |||
{ | |||
int n = a.size(); | |||
if (n == 0) return 0; // prazdny polynom neni definovan | |||
double h = a[--n]; | |||
do while (n) | |||
{ | |||
h *= x; | |||
h += a[--n]; | |||
} | |||
return h; | |||
} | |||
void soucet (const std::vector<double>& q, const std::vector<double>& r, | |||
std::vector<double>& p) | |||
{ | |||
// ve vystupnim kontejneru 'p' musime nejprve zrusit vsechny jeho prvky | |||
p.clear(); | |||
const int nq = q.size(); | |||
const int nr = r.size(); | |||
const int max = std::max(nq, nr); | |||
for (int i=0; i<max; i++) | |||
{ | |||
double s = 0; | |||
if (i < nq) s += q[i]; | |||
if (i < nr) s += r[i]; | |||
p.push_back(s); | |||
} | |||
} | |||
0 9 | |||
0.1 9.2527 | |||
0.2 9.6272 | |||
0.3 10.1607 | |||
0.4 10.9072 | |||
0.5 11.9375 | |||
0.6 13.3392 | |||
0.7 15.2167 | |||
0.8 17.6912 | |||
0.9 20.9007 | |||
1 25 | |||
0 9 | |||
0.1 9.2527 | |||
0.2 9.6272 | |||
0.3 10.1607 | |||
0.4 10.9072 | |||
0.5 11.9375 | |||
0.6 13.3392 | |||
0.7 15.2167 | |||
0.8 17.6912 | |||
0.9 20.9007 | |||
1 25 | |||
[ [[C++ Bc. 13|Zpět]] ] | |||
[[Kategorie:Programování]] | |||
[[Kategorie:C++]] | |||
Aktuální verze z 1. 4. 2016, 07:42
#include <iostream>
#include <vector>
double polynom(double x, const std::vector<double>& a);
void soucet (const std::vector<double>& q, const std::vector<double>& r,
std::vector<double>& p);
int main()
{
using namespace std;
vector<double> p;
p.push_back(9);
p.push_back(2);
p.push_back(5);
p.push_back(2);
p.push_back(7);
for (double x=0; x<1.05; x+=0.1)
{
cout << x << "\t" << polynom(x, p) << endl;
}
cout << endl;
vector<double> q, r;
q.push_back( 3);
q.push_back(-1);
q.push_back( 2);
r.push_back(6);
r.push_back(3);
r.push_back(3);
r.push_back(2);
r.push_back(7);
soucet(q, r, p);
for (double x=0; x<1.05; x+=0.1)
{
cout << x << "\t" << polynom(x, p) << endl;
}
}
double polynom(double x, const std::vector<double>& a)
{
int n = a.size();
if (n == 0) return 0; // prazdny polynom neni definovan
double h = a[--n];
do while (n)
{
h *= x;
h += a[--n];
}
return h;
}
void soucet (const std::vector<double>& q, const std::vector<double>& r,
std::vector<double>& p)
{
// ve vystupnim kontejneru 'p' musime nejprve zrusit vsechny jeho prvky
p.clear();
const int nq = q.size();
const int nr = r.size();
const int max = std::max(nq, nr);
for (int i=0; i<max; i++)
{
double s = 0;
if (i < nq) s += q[i];
if (i < nr) s += r[i];
p.push_back(s);
}
}
0 9 0.1 9.2527 0.2 9.6272 0.3 10.1607 0.4 10.9072 0.5 11.9375 0.6 13.3392 0.7 15.2167 0.8 17.6912 0.9 20.9007 1 25 0 9 0.1 9.2527 0.2 9.6272 0.3 10.1607 0.4 10.9072 0.5 11.9375 0.6 13.3392 0.7 15.2167 0.8 17.6912 0.9 20.9007 1 25
[ Zpět ]