Witam, mam problem.
muszę przesunąć wykres wzdłuż obu osi o wartość podaną przez użytkownika. Próbowałem stworzyć nową tablicę, zaczynającą się od pierwszego punktu, który jest ponad osią przesunięcia, ale niestety program się krzaczy. Program ma wyświetlać wykres za pomocą Google Charts.
#include <stdio.h>
#include <stdlib.h>
float **Odczyt(char*);
double Wykres (float**, int, char*);
float** Delay(float**, float**, int);
float** Offset(float**,float**, int);
int main(int argc, char **argv)
{
float **wsk;
float **ws;
char znak;
Odczyt("nazwa.txt");
wsk=Odczyt("nazwa.txt");
int l_linii=(int)wsk[0][0];
Offset(wsk, ws, l_linii);
Delay (wsk, ws, l_linii);
Wykres(ws,l_linii,"wykres.html");
system("wykres.html");
return 0;
}
float **Odczyt (char *nazwa)
{
float **tab;
int l_linii=0, i=0;
FILE *plik;
plik = fopen(nazwa, "r");
char znak;
while (!feof(plik))
{
znak=fgetc(plik);
if(znak=='\n') l_linii++;
}
tab = (float**)calloc(2, sizeof(float*));
for(i=0; i<2; i++)
{
tab[i] = (float*)calloc(l_linii+1, sizeof(float));
}
tab[0][0]= (float)l_linii;
rewind(plik);
i=1;
while(!feof(plik))
{
fscanf(plik, "%f %f", &tab[0][i], &tab[1][i]);
i++;
}
return tab;
}
double Wykres(float** Tablica,int Ilosc_punktow, char *nazwa) {
FILE *plik;
int i;
plik = fopen(nazwa,"w");
fprintf(plik,"<html>\n");
fprintf(plik,"<head>\n");
fprintf(plik,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
fprintf(plik,"<script type=\"text/javascript\">\n");
fprintf(plik,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
fprintf(plik,"google.setOnLoadCallback(drawChart);\n");
fprintf(plik,"function drawChart() {\n");
fprintf(plik,"var data = google.visualization.arrayToDataTable([\n");
fprintf(plik,"['i', 'dane z tablicy'],\n");
for(i=1;i<Ilosc_punktow;i++){
fprintf(plik,"[%f, %f],\n",Tablica[0][i], Tablica[1][i]); //przekazanie danych na wykres
}
//
fprintf(plik,"]);\n");
fprintf(plik,"var options = {\n");
fprintf(plik,"title: 'rozklad Gaussa'\n");
fprintf(plik,"};\n");
fprintf(plik,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
fprintf(plik,"chart.draw(data, {\n");
fprintf(plik,"colors: ['red']\n");
fprintf(plik,"}\n");
fprintf(plik,");\n");
fprintf(plik,"}\n");
fprintf(plik,"</script>\n");
fprintf(plik,"</head>\n");
fprintf(plik,"<body>\n");
fprintf(plik,"<div id=\"chart_div\" style=\"width: 900px; height: 500px;\"></div>\n");
fprintf(plik,"</body>\n");
fprintf(plik,"</html>\n");
fclose(plik);
return 0;
}
float** Offset(float** tab, float** tablica, int liczba_linii)
{
int i,j;
float off;
printf("Podaj o ile przesunac wykres pionowo: ", off);
scanf ("%f", &off);
for (i=1; i<=liczba_linii; i++)
{
if (tab[1][i]>=off)
{
tab[1][i]=tablica[1][1];
}
return tablica;
}
for (j=1; j<=liczba_linii; j++)
{
tablica[1][j];
}
return tablica;
}
float** Delay(float** tab, float** tablica, int liczba_linii)
{
int i, j;
float ox;
float **z;
printf("Podaj o ile przesunac wykres poziomo: ", ox);
scanf ("%f", &ox);
for (i=1; i<=liczba_linii; i++)
{
if (tab[0][i]>=ox)
{
tab[0][i]=tablica[0][1];
}
}
for (j=1; j<=liczba_linii; j++)
{
tablica[0][j];
}
return tablica;
}
Z góry wielkie dzięki za pomoc