Sumowanie ciągów
Ostatnio zmodyfikowano 2021-01-28 22:29
Shana_a Temat założony przez niniejszego użytkownika |
» 2021-01-28 20:45:50 Właśnie chodzi mi o to, aby było tak jak napisałeś czyli Q[ 0 ] = h[ 0 ] * hd[ 1 ]. Nie rozumiem dlaczego powinny być spójne. Co do wartości, to faktycznie ta pierwsza się różni i niestety to błąd, powinno być 0.576. |
|
nanoant20 |
» 2021-01-28 20:57:42 //edit naniosłem poprawkę (rozszerzyłem warunek), teraz już jest wszystko o.k. #include <iostream> #include <iomanip> #include <vector>
using namespace std;
int main() { vector < double > h { 0.570, 1.371, 1.772, 1.911, 1.887 }; vector < double > hd { 0, 1.4, 1.6, 2.1 }; cout << "ilosc elementow h:= " << h.size() << " ilosc elementow hd:= " << hd.size() << endl; vector < double > Q; double wynik = 0.0; cout << "\n\tshow me step by step" << endl; for( unsigned int i = 0; i <= hd.size(); ++i ) { for( unsigned int j = 1; j <= h.size(); ++j ) { int m = j - 1; int n = i - j + 1; if( n <= 0 || n == hd.size() ) n = 0; cout << "\nh[" << m << "] " << h[ m ] << "\t*\thd[" << n << "] " << hd[ n ]; if( m < h.size() - 1 ) cout << " + " << endl; wynik += h[ m ] * hd[ n ]; if( m == h.size() - 1 ) { Q.push_back( wynik ); cout << "\t= " << wynik << endl; cout << "__________________________________________" << endl; } m = 0; } wynik = 0; } cout << "\nShow me Q" << endl; size_t lp = 1; for( auto const & el: Q ) { cout << "q" << lp << " = " << fixed << setprecision( 2 ) << el << endl; ++lp; } cout << endl; getchar(); return 0; }
|
|
pekfos |
» 2021-01-28 22:29:52 Właśnie chodzi mi o to, aby było tak jak napisałeś czyli Q[ 0 ] = h[ 0 ] * hd[ 1 ]. Nie rozumiem dlaczego powinny być spójne. Zgodnie ze wzorem Q 1 = h 1 * delta H 1, gdzie zakładając że element 1 ma indeks 0, wychodzi h[0] * hd[0], co daje poprawny wynik. Tak jak piszesz że chcesz żeby było (czyli jak masz obecnie) daje błędny wynik. |
|
1 « 2 » |