Wyświetlenie n-tego wyrazu ciągu.

0

Witam,
Moim zadaniem jest wyświetlenie n-tego wyrazu ciągu liczbowego.
W tym przypadku tego (3,5,4,6,5,7,6,8,7...)
Napisałem już coś takiego, ale nie wiem czy idę w ogóle w dobrym kierunku.Oraz za bardzo nie wiem jaki warunek wpisać w else if żeby to działało :(

#include <iostream>

using namespace std;
int n,a;
int main()
{
    cout << "Ktora liczbe ciagu mam wyswietlic: ";
    cin >> n;
    for(int i=1; i<=n; i++){
    if(i==1){
        a=3;
        }
        else if (){
            a=a+2;
        }
        else {
            a=a-1;
        }
    }
    cout << a;
    return 0;
}
0

rozdziel ten ciąg na n parzyste i nieparzyste, a dostaniesz parzyste : 5, 6, 7, 8, a nieparzyste 3, 4, 5, 6, 7. Jak widać są kolejne, więc nie trzeba liczyć wszystkich mniejszych od n. Jak byś się jednak uparł na twój sposób, to sprawdź czy a % 2 == 1

0

Ale program ma za zadanie wyświetlenie nieskończenie wiele liczb, nie tylko tych w nawiasie.
Ja to sobie rozpisałem w taki sposób:
(3,5,4,6,5,7,6,8,7...)
plus 2, minus 1, plus 2 , minus 1,
plus 2 , minus 1, plus 2, minus 1,
Bo takie działania są wykonywanie po kolei. Tylko za bardzo nie wiem jaki warunek w else if wstawić
a%2==1 nie działa w else if.

1
#include <iostream>
#include <limits>

int getValue(size_t n) {
    return (n / 2) + 3 + (2 * (n % 2));
}

size_t getIndex() {
    size_t index;
    while(!(std::cin >> index)) {
        std::cerr << "To co zostało podane to nie liczba. Spróbuj jescze raz.\n";
        std::cin.clear();
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    }
    return index;
}

int main() {
    std::cout << "Którą liczbę ciągu mam wyświetlić [0, ...]: ";
    size_t index = getIndex();
    std::cout << index << " liczba z ciągu to: " << getValue(index) << std::endl;
}
0

Dzięki tak to ma właśnie działać. Mam jeszcze pytanie czy nie da sie tego zrobić za pomocą else if bo takich rzeczy to w szkole jeszcze nie miałem :)?

1

Mój błąd, i % 2 = 1. Zauważ jednak że 2 - 1 = 1 a także -1 + 2 = 1. Tak wiec n-ty wyraz ciągu będzie zawsze równy wyrazowi (n - 2) + 1.

0
#include <iostream>

using namespace std;

int oblicz(int n){
    return (n / 2) + 3 + (2 * (n % 2));
}
int n;
int main()
{
    cout << "Ktora liczbe ciagu mam wyswietlic: ";
    cin >> n;
    cout << oblicz(n);
    return 0;                                  
                                                
}

Ok już wszystko rozumiem, zamieniłem to w taki sposób.

1 użytkowników online, w tym zalogowanych: 0, gości: 1