Atexor Temat założony przez niniejszego użytkownika |
Program liczący N początkowych wyrazów ciągu » 2014-01-06 12:41:36 Witam, mam problem z jednym zadaniem, mianowicie: Proszę napisać program obliczający N początkowych wyrazów ciągu, począwszy od wyrazu a2 (N wczytane z klawiatury, N<=30): Ciąg wygląda tak (zdjęcie, bo ciężko to napisać): http://i.imgur.com/FgVT9E6.jpg gdzie a0=3, a1=2 Problem mam taki, że od siódmego wyrazu ciągu włącznie każdy następny wynosi 0,110462. Kod wygląda tak. Gdzie jest błąd? #include <stdio.h> #include <math.h> #include <stdlib.h>
int main() { float a0 = 3.0, a1 = 2.0, a; int i, n; while( n > 30 ) { puts( "Podaj liczbe wyrazow ciagu:" ); scanf( "%d", & n ); puts( "\nLiczba wyrazow musi byc mniejsza od 30!" ); } for( i = 0; i < n; i++ ) { a =( float ) exp( a1 ) /( float )( 10.0 +( float ) sin( a0 ) ); printf( "%d wyraz ciagu wynosi %f\n", i + 1, a ); a0 = a1; a1 = a; } system( "PAUSE" ); return 0; }
Z góry dziękuję i pozdrawiam ;) |
|
pekfos |
» 2014-01-06 13:54:57 Kod ma niezdefiniowane zachowanie, bo używasz niezainicjalizowanej zmiennej. |
|
Atexor Temat założony przez niniejszego użytkownika |
» 2014-01-06 14:04:34 Chyba nie bardzo rozumiem - przecież wszystkie zmienne mam zdefiniowane, liczba "n" jest wczytywana z klawiatury (jakby było, że n=0 w jej inicjacji to by pętla while nie działała), "a0" i "a1" są podane, "a" jest wynikiem działania, zaś "i" jest tylko do pętli. |
|
pekfos |
» 2014-01-06 14:21:34 przecież wszystkie zmienne mam zdefiniowane |
Czy ja napisałem, że zmienne są niezdefiniowane? Czy składnia zdania tu w ogóle pozwala, na takie znaczenie..? jakby było, że n=0 w jej inicjacji to by pętla while nie działała |
Więc daj taką wartość, dla której będzie działała. Obecnie nic w tym programie nie musi działać. |
|
Monika90 |
» 2014-01-06 14:25:21 Problem mam taki, że od siódmego wyrazu ciągu włącznie każdy następny wynosi 0,110462.
|
Dlaczego uważasz że to problem? Jak łatwo policzyć ciąg jest zbieżny do liczby 0.110461654595563546894305161983997818927092730457963990271395250 (to tak w przybliżeniu...) |
|
docentpp |
» 2014-01-06 14:57:35 @ Monika90
Jakiej biblioteki w C (algorytmu/ewen. programu specjalistycznego) użyto do obliczeń z tak dużą dokładnością ? |
|
Monika90 |
» 2014-01-06 15:03:51 |
|
Atexor Temat założony przez niniejszego użytkownika |
» 2014-01-06 15:07:00 Pekfos, chyba wyjątkowo nie rozumiem Twojego toku myślenia. Po co mam inicjalizować wartość zmiennej np. "n" już na początku programu, skoro potem muszę ją wczytywać z klawiatury? Dodatkowo wtedy pętla while nie będzie działać...
Tak samo z "i", które inicjalizuję dopiero w pętli, bo tam jest potrzebna.
Monika90 - racja, wielkie dzięki! Sprawdziłem używając %.15f i faktycznie to wina przybliżeń. Nie pomyślałem, że ciąg może tak szybko zbiegać do jakiejś liczby.
Poza tym jeśli można wiedzieć, to jak policzyłaś zbieżność tego ciągu aż z taką dokładnością? |
|
« 1 » 2 |