Facebook
From Bistre Butterfly, 8 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 409
  1. Kacper Matloka
  2. Nr 205117
  3. Politechnika Wroclawska
  4.  
  5.  
  6. Przed uruchomieniem programu, należy plik z danymi umiescic w folderze,
  7.  
  8. w ktorym znajduje sie program i ZMIENIC JEGO NAZWE. Nazwa pliku z danymi nie powinna
  9.  
  10. przekraczac 15 znakow.
  11.  
  12. */
  13.  
  14.  
  15.  
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #define ROZMIAR 20
  19.  
  20. //Deklaracja funkcji
  21. double rysujWykres(double** ,int Ilosc_punktow , char *, char *);
  22. double rysujWlasny(double** ,int Ilosc_punktow , char *);
  23. double rysujPochodne(double** , double *, double*, int Ilosc_punktow , char *);
  24. int liczWiersze(char *);
  25. double **odczytajDane(char *);
  26. double **odczytajWlasne(char *);
  27. void zamien(char *, char *);
  28. unsigned wyswietlMenu(void);
  29. double **wpiszWlasne(char *);
  30. double *rozniczkujKanal_I(double**, int Ilosc_punktow);
  31. double *rozniczkujKanal_II(double** , int Ilosc_punktow);
  32. double *calkujDane(double**, int Ilosc_punktow);
  33. void zapisz(char *);
  34. double liczMax_Kanal_I(double**, int Ilosc_punktow);
  35. double liczMax_Kanal_II(double**, int Ilosc_punktow);
  36. double liczSrednia_Kanal_I(double**, int Ilosc_punktow);
  37. double liczSrednia_Kanal_II(double**, int Ilosc_punktow);
  38.  
  39.  
  40.  
  41. int main(int argc, char **argv)
  42. {
  43.    
  44.     printf("\n\n\t\t*  WITAJ W PROGRAMIE!  *");
  45.     getch();
  46.     system("cls");        
  47.     wyswietlMenu();      
  48.     getch();    
  49.     return 0;
  50. }
  51.  
  52.  
  53. double rysujWykres(double** tablica, int IloscPunktow, char *PlikDoZapisu, char *PlikDoOdczytu)        
  54. {                                                                                                                  
  55.     FILE *Wsk_do_pliku;
  56.     int j;
  57.    
  58.     char kolor_I[15];                                                                                    
  59.     char kolor_II[15];
  60.     char tytul_I[30];
  61.     char tytul_II[30];
  62.    
  63.    
  64.     Wsk_do_pliku = fopen(PlikDoZapisu,"w");
  65.    
  66.     printf("\n   Opcje wykresu: \n\n\n");
  67.         printf("  # KOLOR [po angielsku]\n\n");
  68.     printf("    KANAL I: ");
  69.         scanf("%s", &kolor_I);
  70.         printf("\n    KANAL II: ");
  71.         scanf("%s", &kolor_II);
  72.        
  73.         printf("\n\n\n  # TYTUL [odstepy poprzez znak '_']\n\n");
  74.     printf("    KANAL I: ");
  75.         scanf("%s", &tytul_I);
  76.         printf("\n    KANAL II: ");
  77.         scanf("%s", &tytul_II);
  78.  
  79.     fprintf(Wsk_do_pliku,"<html>\n");
  80.     fprintf(Wsk_do_pliku,"<head>\n");
  81.    
  82.     //Wykres dla KANALU I
  83.        
  84.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
  85.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\">\n");
  86.     fprintf(Wsk_do_pliku,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
  87.     fprintf(Wsk_do_pliku,"google.setOnLoadCallback(drawChart);\n");
  88.     fprintf(Wsk_do_pliku,"function drawChart() {\n");
  89.     fprintf(Wsk_do_pliku,"var data = google.visualization.arrayToDataTable([\n");
  90.     fprintf(Wsk_do_pliku,"['Czas',   'Kanal I'],\n");
  91.  
  92.     for(j=0; j<IloscPunktow; j++)
  93.        {
  94.             fprintf(Wsk_do_pliku, "['%.3lf',    %.2lf],\n", tablica[0][j], tablica[1][j]);   //przekazanie danych na wykres
  95.        }
  96.  
  97.     fprintf(Wsk_do_pliku,"]);\n");
  98.     fprintf(Wsk_do_pliku,"var options = {\n");
  99.     fprintf(Wsk_do_pliku,"title: '%s', colors:['%s']\n", tytul_I, kolor_I);
  100.     fprintf(Wsk_do_pliku,"};\n");
  101.     fprintf(Wsk_do_pliku,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
  102.     fprintf(Wsk_do_pliku,"chart.draw(data, options);\n");
  103.     fprintf(Wsk_do_pliku,"}\n");
  104.     fprintf(Wsk_do_pliku,"</script>\n");
  105.        
  106.        
  107.     //Wykres dla KANALU II
  108.    
  109.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
  110.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\">\n");
  111.     fprintf(Wsk_do_pliku,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
  112.     fprintf(Wsk_do_pliku,"google.setOnLoadCallback(drawChart);\n");
  113.     fprintf(Wsk_do_pliku,"function drawChart() {\n");
  114.     fprintf(Wsk_do_pliku,"var data = google.visualization.arrayToDataTable([\n");
  115.     fprintf(Wsk_do_pliku,"['Czas',   'Kanal II'],\n");
  116.  
  117.     for(j=0; j<IloscPunktow; j++)
  118.        {
  119.             fprintf(Wsk_do_pliku, "['%.3lf',    %.2lf],\n", tablica[0][j], tablica [2][j]);   //przekazanie danych na wykres
  120.        }
  121.    
  122.     fprintf(Wsk_do_pliku,"]);\n");
  123.     fprintf(Wsk_do_pliku,"var options = {\n");
  124.     fprintf(Wsk_do_pliku,"title: '%s', colors: ['%s']\n", tytul_II, kolor_II);
  125.     fprintf(Wsk_do_pliku,"};\n");
  126.     fprintf(Wsk_do_pliku,"var chart = new google.visualization.LineChart(document.getElementById('chart_div1'));\n");
  127.     fprintf(Wsk_do_pliku,"chart.draw(data, options);\n");
  128.     fprintf(Wsk_do_pliku,"}\n");
  129.     fprintf(Wsk_do_pliku,"</script>\n");
  130.     fprintf(Wsk_do_pliku,"</head>\n");
  131.    
  132.    
  133.     fprintf(Wsk_do_pliku,"<body>\n");
  134.     fprintf(Wsk_do_pliku,"<div id=\"chart_div\" style=\"width: 1200px; height: 800px;\"></div>\n");
  135.     fprintf(Wsk_do_pliku,"<div id=\"chart_div1\" style=\"width: 1200px; height: 800px;\"></div>\n");
  136.     fprintf(Wsk_do_pliku,"<p><font size=\"2\" face=\"arial\"><b>Nazwa pliku:</b> %s</p> \n", PlikDoOdczytu);
  137.     fprintf(Wsk_do_pliku,"<p><b>Ilosc punktow:</b> %d</p> \n", IloscPunktow);
  138.     fprintf(Wsk_do_pliku,"<p><b>Maksymalna wartosc [KANAL I]:</b> %.2f</p> \n", liczMax_Kanal_I(tablica, IloscPunktow));
  139.     fprintf(Wsk_do_pliku,"<p><b>Maksymalna wartosc [KANAL II]:</b> %.2f</p> \n", liczMax_Kanal_II(tablica, IloscPunktow));
  140.     fprintf(Wsk_do_pliku,"<p><b>Srednia [KANAL I]:</b> %.4f</p> \n", liczSrednia_Kanal_I(tablica, IloscPunktow));
  141.     fprintf(Wsk_do_pliku,"<p><b>Srednia [KANAL I]:</b> %.4f </font>\n", liczSrednia_Kanal_II(tablica, IloscPunktow));
  142.     fprintf(Wsk_do_pliku,"</body>\n");
  143.    
  144.     fprintf(Wsk_do_pliku,"</html>\n");
  145.  
  146.     fclose(Wsk_do_pliku);
  147.     return 0;
  148. }
  149.  
  150.  
  151. double **odczytajDane(char *PlikDoOdczytu)
  152. {
  153.        
  154.    
  155.     double **tablica;
  156.     FILE *plik;
  157.     plik = fopen(PlikDoOdczytu, "r");
  158.     char znak;
  159.     int j, i;
  160.     int k = 0;
  161.    
  162.     i = 0;
  163.    
  164.     while(!feof(plik))
  165.     {
  166.         znak = fgetc(plik);
  167.         if(znak=='\n')  {i++;}
  168.     }  
  169.  
  170.     tablica = (double**)malloc(sizeof(double*)*3);
  171.        
  172.     for(j=0; j<3; j++)
  173.        {
  174.            tablica[j]=(double*)malloc(sizeof(double)*(i-7));
  175.        }
  176.                
  177.             rewind(plik);
  178.             j=0;
  179.            
  180.          
  181.     while(!feof(plik))
  182.          {
  183.              znak=fgetc(plik);
  184.              if(znak=='\n')  {k++;}
  185.              if(k==7)  {break;}
  186.          }
  187.          
  188. // Wskaznik w pliku znajduje sie na poczatku 8 linii.
  189. // Od tego momentu funkcja wczytuje dane do pliku.                              
  190.            
  191.     while(!feof(plik))
  192.          {                                                                
  193.              fscanf(plik, "%lf %lf %lf", &tablica[0][j], &tablica[1][j], &tablica[2][j]);          
  194.              j++;
  195.              printf("%f  %f   %f", tablica[0][j], tablica[1][j], tablica[2][j]);
  196.              if (j==(i-7)) {break;}
  197.          }
  198.          
  199.     return tablica;
  200. }
  201.  
  202. int liczWiersze(char *PlikDoOdczytu)
  203. {
  204.     double **tablica;
  205.     FILE *plik;
  206.     plik = fopen(PlikDoOdczytu, "r");
  207.    
  208.     if(plik==NULL)
  209.        {
  210.            printf("\n\n  Najpierw wczytaj dane!");
  211.            getch();
  212.            system("cls");
  213.            wyswietlMenu();
  214.        }  
  215.            
  216.     char znak;
  217.     int i = 0;
  218.  
  219.     while(!feof(plik))
  220.     {
  221.         znak=fgetc(plik);
  222.         if(znak=='\n')  {i++;}
  223.     }
  224.    
  225.     return i-7;
  226.      
  227. }      
  228.  
  229.  
  230. void zamien(char *PlikDoOdczytu, char *PlikPomocniczy)
  231. {  
  232.     FILE *plik_wejscia;
  233.     FILE *plik_wyjscia;  
  234.  
  235.    
  236.     plik_wejscia = fopen(PlikDoOdczytu, "r");                          
  237.     plik_wyjscia = fopen(PlikPomocniczy, "w");
  238.    
  239.     if(plik_wejscia == NULL)
  240.     {
  241.         system("cls");
  242.         printf("\n\n  Podany plik nie istnieje!\n\n  PAMIETAJ O WPISANIU ROZSZERZENIA");
  243.         getch();
  244.         exit(0);
  245.     }
  246.    
  247.     else
  248.     {
  249.         char c;                        
  250.  
  251.         while(!feof(plik_wejscia))          
  252.              {
  253.                  c=fgetc(plik_wejscia);
  254.                  if (c == ':') c = '0';             // Zamiana znakow w pliku z danymi w celu ulatwienia ich odczytu
  255.                  if (c == ',') c = '.';             //
  256.                  if (c == ';') c = ' ';             //
  257.                  fprintf(plik_wyjscia, "%c", c);
  258.              }
  259.    
  260.    
  261.    
  262.  
  263.     fclose(plik_wejscia);
  264.     fclose(plik_wyjscia);
  265.     }
  266. }
  267.  
  268.  
  269. double *calkujDane(double** tablica, int IloscPunktow)
  270. {
  271.        int i;
  272.        double suma_I = 0, suma_II = 0;
  273.        for(i=0; i<IloscPunktow; i++)
  274.                 {
  275.                        suma_I += (tablica[0][i]*tablica[1][i]);
  276.                        suma_II += (tablica[0][i]*tablica[2][i]);        
  277.                 }
  278.        printf("\n\n  Pole pod wykresem dla KANALU I wynosi: %lf\n\n", suma_I);
  279.        printf("  Pole pod wykresem dla KANALU II wynosi: %lf\n", suma_II);
  280. }
  281.  
  282.  
  283. void zapisz(char *PlikDoOdczytu)
  284. {
  285.     FILE *plik;
  286.     FILE *pomocniczy;
  287.    
  288.    
  289.     pomocniczy = fopen("zapisane_dane.csv", "w");
  290.     plik = fopen(PlikDoOdczytu, "r");
  291.    
  292.     int j=0;
  293.     char c;                        
  294.    
  295.     while(!feof(plik))          
  296.          {
  297.              c=fgetc(plik);
  298.              if (c == ' ') c = ',';
  299.              fprintf(pomocniczy, "%c", c);
  300.          }
  301.  
  302.         fclose(plik);
  303.         fclose(pomocniczy);
  304. }
  305.  
  306.  
  307. double *rozniczkujKanal_I(double** tablica, int IloscPunktow)
  308. {
  309.         double *poch;
  310.         int i = 0;
  311.         double delta = 0.001;
  312.         poch = (double*)calloc(IloscPunktow, sizeof(double));
  313.         while (i<IloscPunktow-1)
  314.         {
  315.                 *(poch+i)=(tablica[1][i+1] - tablica[1][i])/delta;
  316.                 i++;
  317.         }
  318.         return poch;
  319. }
  320.  
  321. double *rozniczkujKanal_II(double** tablica, int IloscPunktow)
  322. {
  323.         double *poch;
  324.         int i=0;
  325.         double delta=0.001;
  326.         poch =(double*)calloc(IloscPunktow, sizeof(double));
  327.         while (i<IloscPunktow-1)
  328.         {
  329.                 *(poch+i)=(tablica[2][i+1] - tablica[2][i])/delta;
  330.                 i++;
  331.         }
  332.         return poch;
  333. }
  334.  
  335.  
  336.  
  337. unsigned wyswietlMenu(void)
  338. {
  339.  
  340.     int opcja, IloscPunktow, w;
  341.    
  342.     printf("\n\t\t* MENU *\n\n\n");
  343.    
  344.     printf("\t\t1 - Wczytaj dane\n\n");
  345.    
  346.     printf("\t\t2 - Rysuj wykres\n\n");
  347.    
  348.     printf("\t\t3 - Calkuj\n\n");
  349.    
  350.     printf("\t\t4 - Rozniczkuj\n\n");
  351.    
  352.     printf("\t\t5 - Zapisz do pliku [.csv]\n\n");
  353.    
  354.     printf("\t\t6 - Podaj wlasne wspolrzedne\n\n\n");
  355.    
  356.     printf("\t\t0 - WYJSCIE\n\n");
  357.    
  358.    
  359.     printf("Wybierz opcje: ");
  360.     scanf("%d", &opcja);
  361.     char nazwa[ROZMIAR];
  362.    
  363.     switch(opcja) {
  364.                   case 1:
  365.                        system("cls");
  366.                        printf("\n  * WCZYTAJ DANE *\n\n\n");
  367.                        printf("  (przyklad: NAZWA_PLIKU.ASC)");                  
  368.                        printf("\n\n\n  Podaj nazwe pliku: ");
  369.                        scanf("%s", &nazwa);
  370.                        zamien(nazwa, "plik_pomocniczy.ASC");
  371.                        odczytajDane("plik_pomocniczy.ASC");
  372.                        IloscPunktow=liczWiersze("plik_pomocniczy.ASC");
  373.                        printf("\n\n  Dane zostaly wczytane do pamieci!");
  374.                        printf("\n\n  W pliku jest %d danych pomiarowych.\n", IloscPunktow);
  375.                        
  376.                        getch();
  377.                        system("cls");
  378.                        wyswietlMenu();            
  379.                        break;
  380.                        
  381.                        
  382.                        
  383.                        
  384.                   case 2:
  385.                        system("cls");
  386.                        printf("\n  * RYSUJ WYKRES *\n\n");
  387.                        IloscPunktow=liczWiersze("plik_pomocniczy.ASC");
  388.                        rysujWykres(odczytajDane("plik_pomocniczy.ASC"), IloscPunktow, "wykres_dane.html", "plik_pomocniczy.ASC");
  389.                        printf("\n  Utworzono wykres w pliku:  wykres_dane.html\n");
  390.                        
  391.                        getch();
  392.                        system("cls");
  393.                        wyswietlMenu();                    
  394.                        break;
  395.                        
  396.                        
  397.                        
  398.                  
  399.                   case 3:
  400.                        system("cls");
  401.                        printf("\n  * CALKOWANIE *\n");
  402.                        IloscPunktow=liczWiersze("plik_pomocniczy.ASC");                      
  403.                        calkujDane(odczytajDane("plik_pomocniczy.ASC"), IloscPunktow);
  404.                        
  405.                        getch();
  406.                        system("cls");
  407.                        wyswietlMenu();
  408.                        break;
  409.      
  410.      
  411.                  
  412.                   case 4:
  413.                        system("cls");
  414.                        printf("\n  * ROZNICZKOWANIE *\n\n");
  415.                        IloscPunktow=liczWiersze("plik_pomocniczy.ASC");
  416.                        printf("\n  Utworzono wykres fukncji i jej pochodnej w pliku:  wykres_pochodna.html\n");
  417.                        rozniczkujKanal_I(odczytajDane("plik_pomocniczy.ASC"), IloscPunktow);
  418.                        rozniczkujKanal_II(odczytajDane("plik_pomocniczy.ASC"), IloscPunktow);
  419.                        rysujPochodne(odczytajDane("plik_pomocniczy.ASC"), rozniczkujKanal_I(odczytajDane("plik_pomocniczy.ASC"),IloscPunktow), rozniczkujKanal_II(odczytajDane("plik_pomocniczy.ASC"), IloscPunktow), IloscPunktow,"wykres_pochodna.html");
  420.                        getch();
  421.                        system("cls");
  422.                        wyswietlMenu();
  423.                        break;
  424.                        
  425.                  
  426.                  
  427.                  
  428.                   case 5:
  429.                        system("cls");
  430.                        printf("\n  * ZAPIS DO PLIKU [.csv] *\n\n\n");
  431.                        zapisz("plik_pomocniczy.ASC");
  432.                        printf("  Dane zostaly zapisane do pliku: zapisane_dane.csv\n");
  433.                        
  434.                        getch();
  435.                        system("cls");
  436.                        wyswietlMenu();
  437.                        break;
  438.                        
  439.                  
  440.                  
  441.                   case 6:
  442.                        system("cls");
  443.                        wpiszWlasne("plik_wlasne_pomocniczy.ASC");
  444.                        IloscPunktow = liczWiersze("plik_wlasne_pomocniczy.ASC");  
  445.                        rysujWlasny(odczytajWlasne("plik_wlasne_pomocniczy.ASC"), IloscPunktow, "wykres_wlasne.html");
  446.                        zapisz("plik_wlasne_pomocniczy.ASC");
  447.  
  448.                        getch();
  449.                        system("cls");
  450.                        wyswietlMenu();
  451.                        break;
  452.  
  453.                                          
  454.                   case 0:
  455.                        system("cls");
  456.                            printf("\n\n\n\n\t\t*  KONIEC PRACY PROGRAMU  *");
  457.                        break;
  458.                        
  459.                        
  460.                   default:
  461.                           printf("\n\nBLEDNA OPCJA. WYBIERZ PONOWNIE...");
  462.                          
  463.                           getch();
  464.                           system("cls");
  465.                           wyswietlMenu();
  466.                           break;
  467.                   }    
  468. }
  469.  
  470. double **wpiszWlasne(char *PlikPomocniczy)
  471. {
  472.     double **tablica;
  473.     int j, i;
  474.     double x, y;
  475.        
  476.     tablica = (double**)malloc(sizeof(double*)*2);
  477.        
  478.     for(j=0; j<2; j++)
  479.        {
  480.            tablica[j]=(double*)malloc(sizeof(double)*100);
  481.        }
  482.            
  483.     printf("\n\n  Podaj Twoje wspolrzedne. Aby zakonczyc wpisz '123456789'\n\n");        
  484.                  
  485.     for(j=0; ; j++)
  486.        {
  487.            printf("  x%d = ", j+1);
  488.            scanf("  %lf", &x);
  489.            
  490.            if(x==123456789) {break;}
  491.            
  492.            tablica[0][j] = x;
  493.            
  494.            printf("  y%d = ", j+1);
  495.            
  496.            scanf("  %lf", &y);
  497.            
  498.            tablica[1][j] = y;
  499.            printf("\n");
  500.              
  501.            if(y==123456789)
  502.              {
  503.                  printf("Podaj jeszcze wartość dla x%d!\n\n", j+1);
  504.                  printf("  y%d = ", j+1);
  505.                  scanf("  %lf", &y);
  506.                  tablica[1][j] = y;
  507.              }
  508.              
  509.         }
  510.            
  511.     int q, w;
  512.     double a, b;
  513.    
  514.     for(q=0; q<j; q++)
  515.        {
  516.             for(w=0; w<j-1; w++)
  517.                {
  518.                     if(tablica[0][w] > tablica[0][w+1])
  519.                       {
  520.                           a=tablica[0][w];
  521.                           b=tablica[1][w];
  522.                           tablica[0][w]=tablica[0][w+1];
  523.                           tablica[1][w]=tablica[1][w+1];
  524.                           tablica[0][w+1]=a;
  525.                           tablica[1][w+1]=b;
  526.                       }
  527.        
  528.                }  
  529.        }
  530.                        
  531.     printf("\n\n");
  532.            
  533.     for(i=0; i<j; i++)
  534.        {
  535.             printf("%.2lf   %.2lf\n\n", tablica[0][i], tablica[1][i]);        
  536.        }
  537.            
  538.     printf("\nDane zostaly zapisane w pamieci i w pliku .csv!");
  539.  
  540.     int z;
  541.     FILE *pliczek;
  542.            
  543.     pliczek=fopen(PlikPomocniczy, "w");
  544.  
  545.     for(z=0; z<j; z++)
  546.        {
  547.             fprintf(pliczek, "%.2lf    %.2lf\n", tablica[0][z], tablica[1][z]);  
  548.        }
  549.  
  550.     fclose(pliczek);
  551.     return tablica;
  552. }
  553.  
  554.  
  555. double rysujWlasny(double** tablica, int IloscPunktow, char *PlikDoZapisu)
  556. {
  557.     FILE *Wsk_do_pliku2;
  558.     int j;
  559.  
  560.     Wsk_do_pliku2 = fopen(PlikDoZapisu, "w");
  561.  
  562.     fprintf(Wsk_do_pliku2,"<html>\n");
  563.     fprintf(Wsk_do_pliku2,"<head>\n");
  564.     fprintf(Wsk_do_pliku2,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
  565.     fprintf(Wsk_do_pliku2,"<script type=\"text/javascript\">\n");
  566.     fprintf(Wsk_do_pliku2,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
  567.     fprintf(Wsk_do_pliku2,"google.setOnLoadCallback(drawChart);\n");
  568.     fprintf(Wsk_do_pliku2,"function drawChart() {\n");
  569.     fprintf(Wsk_do_pliku2,"var data = google.visualization.arrayToDataTable([\n");
  570.     fprintf(Wsk_do_pliku2,"['Argumenty',  'Wartosci'],\n");
  571.  
  572.     for(j=0; j<IloscPunktow; j++)
  573.        {
  574.            fprintf(Wsk_do_pliku2, "['%.2lf',    %.2lf],\n", tablica[0][j], tablica[1][j]);   //przekazanie danych na wykres
  575.        }
  576.  
  577.     fprintf(Wsk_do_pliku2,"]);\n");
  578.  
  579.     fprintf(Wsk_do_pliku2,"var options = {\n");
  580.     fprintf(Wsk_do_pliku2,"title: 'Wykres danych uzytkownika', colors: ['blue']\n");
  581.     fprintf(Wsk_do_pliku2,"};\n");
  582.     fprintf(Wsk_do_pliku2,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
  583.     fprintf(Wsk_do_pliku2,"chart.draw(data, options);\n");
  584.     fprintf(Wsk_do_pliku2,"}\n");
  585.     fprintf(Wsk_do_pliku2,"</script>\n");
  586.     fprintf(Wsk_do_pliku2,"</head>\n");
  587.     fprintf(Wsk_do_pliku2,"<body>\n");
  588.     fprintf(Wsk_do_pliku2,"<div id=\"chart_div\" style=\"width: 1200px; height: 800px;\"></div>\n");
  589.     fprintf(Wsk_do_pliku2,"</body>\n");
  590.     fprintf(Wsk_do_pliku2,"</html>\n");
  591.  
  592.     fclose(Wsk_do_pliku2);
  593.     return 0;
  594. }
  595.  
  596. double **odczytajWlasne(char *PlikDoOdczytu)
  597. {
  598.        
  599.    
  600.     double **tablica;
  601.     FILE *plik_wyjscia;
  602.     plik_wyjscia = fopen(PlikDoOdczytu, "r");
  603.     char znak;
  604.     int j, i=0;
  605.    
  606.     while(!feof(plik_wyjscia))
  607.          {
  608.              znak=fgetc(plik_wyjscia);
  609.              if(znak=='\n')  {i++;}
  610.          }
  611.          
  612.     tablica = (double**)malloc(sizeof(double*)*2);
  613.        
  614.     for(j=0; j<2; j++)
  615.        {
  616.             tablica[j]=(double*)malloc(sizeof(double)*i);
  617.        }        
  618.     rewind(plik_wyjscia);
  619.     j=0;                  
  620.            
  621.             while(!feof(plik_wyjscia))
  622.             {                                                    
  623.                 fscanf(plik_wyjscia, "%lf  %lf", &tablica[0][j], &tablica[1][j]);          
  624.                 j++;
  625.                 if (j==i) {break;}
  626.             }
  627.     printf("\n\nW pliku jest %d danych pomiarowych.", i);
  628.     return tablica;
  629. }
  630.  
  631.  
  632. double rysujPochodne(double** tablica, double *pochodna_I, double *pochodna_II, int IloscPunktow, char *PlikDoZapisu)
  633. {    
  634.     FILE *Wsk_do_pliku;
  635.     int j;
  636.  
  637.     Wsk_do_pliku = fopen(PlikDoZapisu, "w");
  638.  
  639.     fprintf(Wsk_do_pliku,"<html>\n");
  640.     fprintf(Wsk_do_pliku,"<head>\n");
  641.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
  642.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\">\n");
  643.     fprintf(Wsk_do_pliku,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
  644.     fprintf(Wsk_do_pliku,"google.setOnLoadCallback(drawChart);\n");
  645.     fprintf(Wsk_do_pliku,"function drawChart() {\n");
  646.     fprintf(Wsk_do_pliku,"var data = google.visualization.arrayToDataTable([\n");
  647.     fprintf(Wsk_do_pliku,"['Czas',   'Kanal I',   'Pochodna'],\n");
  648.  
  649.     for(j=0;j<IloscPunktow;j++)
  650.        {
  651.            fprintf(Wsk_do_pliku,"['%.3lf',    %.2lf,    %.2lf],\n", tablica[0][j], tablica[1][j], pochodna_I[j]);   //przekazanie danych na wykres
  652.        }
  653.  
  654.     fprintf(Wsk_do_pliku,"]);\n");
  655.  
  656.     fprintf(Wsk_do_pliku,"var options = {\n");
  657.     fprintf(Wsk_do_pliku,"title: 'Pomiar transmisji fali ultradzwiękowej [KANAL I].'\n");
  658.     fprintf(Wsk_do_pliku,"};\n");
  659.     fprintf(Wsk_do_pliku,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
  660.     fprintf(Wsk_do_pliku,"chart.draw(data, options);\n");
  661.     fprintf(Wsk_do_pliku,"}\n");
  662.     fprintf(Wsk_do_pliku,"</script>\n");
  663.  
  664.  
  665.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
  666.     fprintf(Wsk_do_pliku,"<script type=\"text/javascript\">\n");
  667.     fprintf(Wsk_do_pliku,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
  668.     fprintf(Wsk_do_pliku,"google.setOnLoadCallback(drawChart);\n");
  669.     fprintf(Wsk_do_pliku,"function drawChart() {\n");
  670.     fprintf(Wsk_do_pliku,"var data = google.visualization.arrayToDataTable([\n");
  671.     fprintf(Wsk_do_pliku,"['Czas',   'Kanal II',   'Pochodna'],\n");
  672.  
  673.     for(j=0;j<IloscPunktow;j++)
  674.        {
  675.             fprintf(Wsk_do_pliku,"['%.3lf',    %.2lf,    %.2lf],\n", tablica[0][j], tablica[2][j], pochodna_II[j]);   //przekazanie danych na wykres
  676.        }
  677.  
  678.     fprintf(Wsk_do_pliku,"]);\n");
  679.  
  680.     fprintf(Wsk_do_pliku,"var options = {\n");
  681.     fprintf(Wsk_do_pliku,"title: 'Pomiar transmisji fali ultradzwiękowej [KANAL II].'\n");
  682.     fprintf(Wsk_do_pliku,"};\n");
  683.     fprintf(Wsk_do_pliku,"var chart = new google.visualization.LineChart(document.getElementById('chart_div1'));\n");
  684.     fprintf(Wsk_do_pliku,"chart.draw(data, options);\n");
  685.     fprintf(Wsk_do_pliku,"}\n");
  686.     fprintf(Wsk_do_pliku,"</script>\n");
  687.     fprintf(Wsk_do_pliku,"</head>\n");
  688.    
  689.     fprintf(Wsk_do_pliku,"<body>\n");
  690.     fprintf(Wsk_do_pliku,"<div id=\"chart_div\" style=\"width: 1200px; height: 800px;\"></div>\n");
  691.     fprintf(Wsk_do_pliku,"<div id=\"chart_div1\" style=\"width: 1200px; height: 800px;\"></div>\n");
  692.     fprintf(Wsk_do_pliku,"</body>\n");
  693.     fprintf(Wsk_do_pliku,"</html>\n");
  694.  
  695.     fclose(Wsk_do_pliku);
  696.     return 0;
  697. }
  698.  
  699. double liczMax_Kanal_I(double **tablica, int IloscPunktow)
  700. {
  701.     double maksimum = tablica[1][0];
  702.     int i;
  703.    
  704.     for(i=0; i<IloscPunktow-1; i++)
  705.        {
  706.             if(tablica[1][i+1] > maksimum)
  707.               {
  708.                    maksimum = tablica[1][i+1];
  709.               }
  710.        }
  711.        
  712.     return maksimum;
  713. }
  714.  
  715. double liczMax_Kanal_II(double **tablica, int IloscPunktow)
  716. {
  717.     double maksimum = tablica[2][0];
  718.     int i;
  719.        
  720.     for(i=0; i<IloscPunktow-1; i++)
  721.        {
  722.             if(tablica[2][i+1] > maksimum)
  723.               {
  724.                    maksimum = tablica[2][i+1];
  725.               }
  726.        }
  727.        
  728.     return maksimum;
  729. }
  730.  
  731. double liczSrednia_Kanal_I(double **tablica, int IloscPunktow)
  732. {
  733.     double srednia, suma = 0;
  734.     int i;
  735.      
  736.     for(i=0; i<IloscPunktow; i++)
  737.        {
  738.             suma += tablica[1][i];
  739.        }
  740.  
  741.     srednia = suma/(i*1.0);  
  742.     return srednia;
  743.              
  744. }
  745.  
  746.  
  747. double liczSrednia_Kanal_II(double **tablica, int IloscPunktow)
  748. {
  749.     double srednia, suma = 0;
  750.     int i;
  751.        
  752.     for(i=0; i<IloscPunktow; i++)
  753.        {
  754.             suma += tablica[2][i];
  755.        }
  756.    
  757.     srednia = suma/(i*1.0);
  758.     return srednia;
  759. }