01 marca 2015

Funkcje trygonometryczne na przedziale z zadanym rastrem – C/C++

// ©2015 Patryk Grądys
// Funkcje trygonometryczne na przedziale z zadanym rastrem

#include 
#include 
#include 

int main () {

    int i;
    double x, wynik;
    wynik = 0.0;
    double eps = 0.0000001;
    FILE *pFile;
    
    pFile = fopen ("prog2.txt", "wt");
    fseek(pFile, 0, SEEK_SET);

    printf("   i \t x \t wynik \n\n");         
        
    for(i=0; i<=100; i++) { //ustawiamy 100 wartosci
             x = 2.0*i/100.0-1.0; //przeskalowanie
             
             // bezpiecznik na wypadek dzielenia przez zero, 
             
             if(fabs(x) < eps) {                 
                  wynik = 999999.0; //wowczas wynik = 999999.0 (zeby byl latwo rozroznialny)
             }
             
             else {
             //sin^2(x) = (1-cos(2*x))/2 // z tozsamosci trygonometrycznej
             // Przeksztalcam wzor funkcji na jezyk C:
                              
                  wynik = ((1-cos(2.0*x))/2.0) / (sqrt(1.0-cos(2.0*x)));
             }
                 
             // wyswietlanie wynikow z przedzialu <-1 data-blogger-escaped-1="">
             if (i <= 100) { 
                 printf(          "%4d %8.4f %8.4f \n", i, x, wynik);  
                 fprintf(pFile,   "%4d %8.4f %8.4f \n", i, x, wynik);
             }  
             // co prawda w zadaniu jest mowa o odczycie tylko z dysku, 
             // ale wyswietlam pogladowo, zeby sprawdzic czy aby na pewno 
             // wlasciwie wartosci znajduja sie w pliku       
    }
             
    fclose( pFile);
    
    printf("\n Dane wyswietlane z pliku \n");
    
    // Wyswietlanie danych z pliku
    pFile = fopen ("prog2.txt", "rt");
    fseek(pFile, 0, SEEK_SET);
    
    int k;
    float y, fwynik;
    
    for(i = 0; i<=100; i++) { //wyswietlam 100 wartosci z pliku
          fscanf(pFile, "%d %f %f \n", &k, &y, &fwynik);
          printf("%4d %8.4f %8.4f \n", i, y, fwynik);      
    }
    
    fclose( pFile);
    
    system("PAUSE");
    return 0;
}