Zadanie 4. Co ty robisz w linii 13.?
tablica [n] = tablica [n-1] + r;
to tak nie zadziała. W ten sposób można sobie matematycznie przedstawić wzór na ciąg, ale to nie jest kod, który zwróci ciąg! Musisz zrobić pętlę, w której będziesz obliczała po kolei następny wyraz ciągu. Ja bym zrobił to tak:
//Zadanie 4
#include <iostream>
using namespace std;
int main()
{
int r; // roznica ciagu
int ciag[100]; // ciag
cout << "Podaj pierwszy wyraz ciagu oraz roznice ciagu: ";
cin >> ciag[0] >> r; // wczytuje pierwszy wyraz ciagu (indeks 0) i roznice
for(int i = 1; i < 100; i++) // petla od 2 do 100 wyrazu ciagu (indeks od 1 do 99)
ciag[i] = ciag[i-1] + r; // dla danego wyrazu ustawiamy go na poprzedni + r
for(int i=0; i < 100; i++) // petla po wszystkich wyrazach
cout << ciag[i] << " "; // wypisujemy wyraz i spacje
cout << endl; // na końcu enter
return 0;
}
Zadanie 6. Gdzie tu jest w ogóle funkcja main()? To nie ma prawa się skompilować. Chyba pomieszałaś funkcję rekurencyjną zwracającą i-ty element ciągu, funkcję main i obliczanie bez rekurencji... To nie ma żadnego sensu. To jest poprawne rozwiązanie nierekurencyjne:
//Zadanie 6
#include <iostream>
using namespace std;
int main()
{
int ile; // ile wyrazów
cout << "Podaj liczbę wyrazów ciagu fibonacciego: ";
cin >> ile; // wczytuje ile wyrazów ma wypisać
int w1 = 0; // aktualny wyraz ciągu
int w2 = 1; // następny wyraz ciągu
for (int i = 0; i < ile; i++) { // petla ile razy trzeba liczyć następny
cout << w1 << " "; // wypisujemy aktualny i spacje
int tmp = w1; // robimy jego "kopię"
w1 = w2; // przypisujemy mu następny wyraz ("przesuwamy się" po ciągu)
w2 = w1+tmp; // przypisujemy następnemu aktualny+poprzedni (poprzedni to ten ktorego kopie zrobilismy)
}
cout << endl; // na koniec enter
return 0;
}