Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. double sin1(double z, int y); //funkcja liczaca sinusa za pomoca ciągu
  6.    
  7. int silnia(int z); //funkcja pomocnicza, do liczenia silni
  8.  
  9. int main()
  10. {  
  11.     FILE *plik; //przypisanie wskaźnika do pliku
  12.     plik=fopen("sinus.dat","w"); //otwarcie pliku do którego zapiszemy dane
  13.     double x=0.1; //wartość dla której będziemy liczyć sinusa
  14.    
  15.     int n=10; //wartość przybliżenia (ilość wyrazów ciągu, które zsumujemy)
  16.     double error; //zmienna do liczenia błędu
  17.    
  18.     for(int f=0;f<30;f++)
  19.                          
  20.     {
  21.                 error=sqrt((sin1(x,n)-sin(x))*(sin1(x,n)-sin(x)));//przypisanie wartości błędu
  22.                 fprintf(plik,"%d\t%lf\n",x,error); //drukowanie do pliku
  23.                
  24.                 x+=0.1;
  25.                    
  26.                
  27.     }
  28.    
  29.     if(fclose(plik)!=0)
  30.                 printf("Blad zamkniecia pliku\n"); //sprawdzamy, czy plik zostal poprawnie zamknięty
  31.  
  32.  
  33.  
  34.    
  35.    
  36.     system("PAUSE");
  37.     return EXIT_SUCCESS;
  38. }
  39.  
  40. double sin1(double z, int y) //funkcja korzysta ze zmiennej typu double, od której liczymy wartość cosinusa,
  41.                               // oraz zmiennej typu int, która określa wartość przybliżenia (ilość wyrazów
  42.                               // ciągu, które zsumujemy)
  43. {
  44.        double sin=0; //zmienna do której przypisana zostanie wartość sinusa
  45.        int j=1; //pomocnicza zmienna, obliczająca obecną wartość potęgi, i silni
  46.        for(int i=1;i<=y;i++) //pętla zrobi liczbę przejść równą wartości ustalonego przybliżenia
  47.        {
  48.               if(i%2!=0)
  49.                         sin+=pow(z,j)/silnia(j); //kiedy i nie jest nieparzyste, dodajemy kolejny wyraz, zgodnie ze wzorem
  50.               else
  51.                         sin-=pow(z,j)/silnia(j); //kiedy i jest parzyste, odejmujemy kolejny wyraz
  52.               j+=2; //zwiększamy pomocniczy j, żeby przeskakiwał o 2
  53.        }
  54.        return sin; //zwracamy wartość cosinusa hiperbolicznego uzyskanego za pomocą sumy ciągu
  55. }
  56.  
  57.    
  58.  
  59. int silnia(int z)//funkcja korzysta ze zmiennej typu int, dla której liczymy wartość silni
  60. {
  61.     int silnia=1; //zmienna do której przypisana zostanie wartość silni
  62.     for(int i=1;i<=z;i++)//pętla zrobi liczbę przejść równą wartości liczby od której liczymy silnię
  63.     {
  64.             silnia*=i; //zmiana wartości zmiennej "silnia"
  65.     }
  66.     return silnia; //zwracamy wartość silni
  67.    
  68.    
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement