Przesunięcie wykresu wzdłuż obu osi o podaną wartość

0

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

2
  1. Zapoznaj się ze strukturami:
typedef struct Point { double x,y; } Point;
  1. Wtedy opóźnienie wygląda następująco:
void Delay(Point *tb,size_t size,double value) { for(size_t i=0;i<size;++i) tb[i].x+=value; }
  1. Zaś przesunięcie następująco:
void Offset(Point *tb,size_t size,double value) { for(size_t i=0;i<size;++i) tb[i].y+=value; }
  1. Przydzielenie pamięci:
Point *tb; tb=malloc(count*sizeof(Point));
  1. Nie przeglądaj pliku dwukrotnie, lepiej przydziel początkowo dla tablicy 256 punktów zaś po przekroczeniu przydzielonego rozmiaru podwajaj.
0

Wielkie dzięki, postaram się coś wykombinować

1 użytkowników online, w tym zalogowanych: 0, gości: 1