[C++] Program wyznaczający dany wyraz ciągu

Majka99
Użytkownik
Użytkownik
Posty: 152
Rejestracja: 20 paź 2012, o 12:54
Płeć: Kobieta
Lokalizacja: zgierz
Podziękował: 15 razy

[C++] Program wyznaczający dany wyraz ciągu

Post autor: Majka99 »

Napisz program, który pobiera z klawiatury liczbe naturalna n oraz liczbe rzeczywista
\(\displaystyle{ a = x_1}\), nastepnie oblicza n-ty wyraz ciagu okreslonego wzorem
\(\displaystyle{ x_{k+1}=0,5 \cdot (x_k+\frac{x_1}{x_k})}\)

Kod: Zaznacz cały

#include <iostream>

using namespace std;


int main(int argc, char** argv) {
		int n;
	int liczba;
	int x;
	cout<<"Podaj pierwszy wyraz ciagu"<<endl;
	cin>>x;
	liczba=x;
	cout<<"Ktory wyraz ciagu chcesz znac"<<endl;
	cin>>n;
for(int i=0;i<n;i++)
	liczba=0,5*(liczba+(x/liczba));
	cout<<liczba<<endl;
	
	
	return 0;
}
Mam cos takiego,lec niestety nie dziala,czy moglabym prosic o jakies wskazowki,co robie zle,co powinno sie znalezc w tym ? Z gory dzieki
Ostatnio zmieniony 3 sie 2013, o 17:03 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
jarek4700
Użytkownik
Użytkownik
Posty: 939
Rejestracja: 26 gru 2009, o 17:38
Płeć: Mężczyzna
Lokalizacja: Mazowsze
Podziękował: 5 razy
Pomógł: 228 razy

[C++] Program wyznaczający dany wyraz ciągu

Post autor: jarek4700 »

Po pierwsze zmienna \(\displaystyle{ liczba}\) powinna być raczej \(\displaystyle{ float/double}\) a nie \(\displaystyle{ int}\).
Po drugie \(\displaystyle{ \frac{1}{2}}\) w C++ powinnaś zapisać jako \(\displaystyle{ 0.5}\) a nie \(\displaystyle{ 0,5}\).
jeszcze możesz zobaczyć co robi przecinek i dlaczego to się w ogóle skompilowało.
Gouranga
Użytkownik
Użytkownik
Posty: 1588
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[C++] Program wyznaczający dany wyraz ciągu

Post autor: Gouranga »

Kod: Zaznacz cały

#include <iostream>
using namespace std;

double wyraz(double x1, int k){
  if (k==1){
    return x1;
  } else {
    return 0.5 * (wyraz(x1,k-1) + x1 / wyraz(x1,k-1));
  }
}

int main(void){
  int n;
  double x1;
  cin >> n;
  cin >> x1;
  cout << wyraz(x1,n);
}
będzie żreć pamięć na potęgę ale zadziała
Majka99
Użytkownik
Użytkownik
Posty: 152
Rejestracja: 20 paź 2012, o 12:54
Płeć: Kobieta
Lokalizacja: zgierz
Podziękował: 15 razy

[C++] Program wyznaczający dany wyraz ciągu

Post autor: Majka99 »

Dziękuje za pomoc
pawel_wr
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 25 paź 2012, o 04:00
Płeć: Mężczyzna
Lokalizacja: wroclaw
Pomógł: 3 razy

[C++] Program wyznaczający dany wyraz ciągu

Post autor: pawel_wr »

Rozwiązanie iteracyjne :

Kod: Zaznacz cały

double wyraz(double x1 , int n)
{
    int
         licznik;
    double   
         xs,xn;
      
    licznik=1;
    xn=x1;
    
    while ( licznik!=n )
    {
        xs=xn;
        xn=0.5*(xs+x1/xs);
        licznik++;
    }
    return xn;
}
Wielokrotnie szybsze niż rekurencyjne.
ODPOWIEDZ