• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Symbole "sigma" i "pi" przy zadaniach z instrukcjami iteracyjnymi

0 głosów
3,126 wizyt
pytanie zadane 28 lipca 2016 w C i C++ przez Fluskys Nowicjusz (230 p.)
zamknięte 28 lipca 2016 przez Fluskys

Witam,

Uczę się obecnie na wakacjach C++ od zera, kupiłem książkę przygotowującą pod maturę z informatyki. (wiem że programowania nie powinno się uczyć pod maturę, ale nie mam wyjścia bez fizyki w przedmiotach). Problem w tym, że niestety książka ta pozostawia wiele niewyjaśnionych kwestii. Mam za zadanie skonstruować algorytm iteracyjny na podstawie tych wzorów:

Oczywiście nigdzie w książce nie ma wytłumaczenia jak to odczytywać i przekształcać na kod. Proszę o wytłumaczenie mi w jaki sposób zapisywać "to coś" w c++.

komentarz zamknięcia: Problem rozwiązany

1 odpowiedź

0 głosów
odpowiedź 28 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)
A znasz podstawowe konstrukcje języka: pętle, operatory matematyczne?
komentarz 28 lipca 2016 przez Fluskys Nowicjusz (230 p.)
znam

Edit: doszedlem do tego że ma to jakiś zwiazek z "for" ale i tak nie wiem w którym miejscu ma być co.

Zapewne początek do obu jest taki: for(int i=1; i<=n;...)
komentarz 28 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)

Więc w czym problem? Zastosuj pętlę for, która będzie sumować te ułamki i to wszystko.

komentarz 28 lipca 2016 przez Fluskys Nowicjusz (230 p.)
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
main()
{
    float n, suma, n1;
    cin>>n;
    for (int i=1; i<=n; i++) 
    {
        suma+=n1;
        n1=1/(2*i);
    }
    cout<<suma;
    return(0);
}

Mogę prosić o jakiś komentarz do tego? Nie działa. Przekształcałem to na rozne sposoby i siedze nad tym jakiś czas. (przykład 1)

komentarz 28 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)

Wyzeruj zmienną suma i dodawaj wartości od razu do niej, bez pośredników w postaci n1.

komentarz 28 lipca 2016 przez Fluskys Nowicjusz (230 p.)
edycja 28 lipca 2016 przez Fluskys

Nie wiem czy dobrze zrozumiałem (dalej nie pokazuje dobrych wyników)

#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
main()
{
    float n, suma=0;
    cin>>n;
    for (int i=1; i<=n; i++) suma+=1/(2*i);
    cout<<suma;
    return(0);
}

Dla np. suma+=1 wynik się zgadza, tylko przy tym 1/(2*i) mam cały czas 0

komentarz 28 lipca 2016 przez Patrycjerz Mędrzec (192,320 p.)

Rzutuj wartości int na float:

suma += 1.0f / (2.0f * (float) i);

Lepiej i tak by było zastosować double (wtedy bez f na końcu).

komentarz 28 lipca 2016 przez Fluskys Nowicjusz (230 p.)
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
main()
{
    double n, suma=0;
    cin>>n;
    for (double i=1; i<=n; i++) suma+=1/(2*i);
    cout<<suma;
    return(0);
}

Jest okej, dziękuje wink

Podobne pytania

+1 głos
1 odpowiedź 1,548 wizyt
0 głosów
2 odpowiedzi 248 wizyt
pytanie zadane 29 stycznia 2020 w C# przez Mariusz M Obywatel (1,670 p.)
0 głosów
4 odpowiedzi 1,866 wizyt
pytanie zadane 15 października 2017 w C i C++ przez Corvette 653 Początkujący (400 p.)

93,740 zapytań

142,675 odpowiedzi

323,294 komentarzy

63,319 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...