Błąd przy wyświetlaniu wykresu

0

Witam,
napisałem (jeszcze niedokończony) program. Jest z nim jeden problem, a mianowicie przy próbie otworzenia 1 opcji w tym programie - rysowanie wykresu, wychodzi błąd : nazwa 'wykres.html' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy .
Czy ktoś mógłby mi wytłumaczyć co z tym zrobić? Szukałem odpowiedzi w Google, próbowałem zmieniać coś w PATH, ale do niczego dobrego nie doszedłem.
Z góry wielkie dzięki, wrzucam kod programu:

#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

typedef struct Parametry
{
	double A,A0,fs,fp,t,fi;
}Parametry;
typedef struct Tablica
{
	double *sygnal;
	double *czas;
	int ilosc;
}Tablica;

void generuj(Parametry *p,Tablica *t);

double wyswietl (Tablica *t);

double zapis (Tablica *t);

double odczyt (Tablica *t);

double menu(Parametry *p, Tablica *t);

float szum();

void odszumianie (Tablica*t);

void wykres(Tablica *t);

int main(void)
{
	Parametry p={1,0,1,20,1,0};
	Tablica t={0,0,0};
	generuj(&p,&t);
	menu(&p, &t);
	if(t.czas)
		free(t.czas);
	if(t.sygnal)
		free(t.sygnal);
	system("PAUSE");
	return 0;
}

double menu(Parametry *p, Tablica *t)
{
 int znak;
 printf("Podaj znak: ");
 scanf("%d", &znak);
 switch(znak)
	{
	case 1:
				printf("Wyswietlanie tablicy\n");
				wyswietl(t);
				wykres(t);
				system("wykres.html");
	break;
	case 2:
				printf("Zapisywanie tablicy do pliku\n");
				zapis(t);
	break;
	case 3:
				printf("Odczytywanie i liczenie linii pliku \n");
				odczyt(t);
	break;
	case 4:
				printf("Odszumianie sygnalu \n");
				odszumianie(t);
				wyswietl(t);
	break;

 default: printf("zly znak");
	break;
 }
 return 0;
}

void generuj(Parametry *p, Tablica *t)
{
	int i;
	int ilosc = (int)(p->fp*p->t);
	float s;
	srand(time(NULL));

	t->czas=(double*)malloc(sizeof(double)*ilosc);
	t->sygnal=(double*)malloc(sizeof(double)*ilosc);
	t->ilosc=ilosc;

	for(i=0;i<t->ilosc;i++)
	{
		i=(rand()%(t->ilosc))+i;
		s=(rand()%100+rand()%100+rand()%100+rand()%100+rand()%100+rand()%100+rand()%100+rand()%100+rand()%100+rand()%100)*1.0/5000;
	}

	for(i=0;i<ilosc;i++)
	{
		t->sygnal[i]=(p->A0+p->A*sin(2.0*M_PI*p->fs*i/p->fp+p->fi))+s;
		t->czas[i]=(double)i/(p->fp);
	}
}

double wyswietl (Tablica *t)
{
	int i;
	for (i=0;i<t->ilosc;i++)
	{
		printf("%.3lf\t%lf\n", t->czas[i], t->sygnal[i]);
	}
	return 0;
}

double zapis (Tablica *t)
{
 int i;
 FILE *plik;
 plik= fopen("nazwa.txt", "w");
 for (i=0;i<t->ilosc;i++)
 {
	fprintf (plik, "%.3lf\t%lf\n", t->czas[i], t->sygnal[i]);
 }
 fclose(plik);
 return 0;
}

double odczyt (Tablica *t)
{
 char c;
 int a=0;
 FILE *plik;
 plik= fopen("nazwa.txt", "r");
 while (!feof(plik))
 {
	c=fgetc(plik);
	if(c=='\n') a++;
 }
 rewind (plik);
 printf("%d\n", a);
 fclose (plik);
 return 0;
}

void odszumianie (Tablica *t)
{
 int i;
 t->sygnal[0]=(t->sygnal[0]+t->sygnal[1])/2;
 t->sygnal[1]=(t->sygnal[0]+t->sygnal[1]+t->sygnal[2])/3;
 for(i=2;i<t->ilosc-1;i++)
 {
	t->sygnal[i]=(t->sygnal[i-2]+t->sygnal[i-1]+t->sygnal[i]+t->sygnal[i+1]+t->sygnal[i+2])/5;
 }
	t->sygnal[t->ilosc-2]=(t->sygnal[i-3]+t->sygnal[i-2]+t->sygnal[i-1]+t->sygnal[i])/4;
	t->sygnal[t->ilosc-1]=(t->sygnal[i-2]+t->sygnal[i-1]+t->sygnal[i])/3;
}

void wykres(Tablica *t)
{
	FILE *plik;
	int i;
	char kolor[20], tytul[20];
	char *nazwa = "wykres.html";

	int szerokosc, wysokosc;
	printf("Podaj tytul wykresu: ");
	scanf("%s", tytul);
	printf("Podaj wysokosc wykresu: ");
	scanf("%d", &wysokosc);
	printf("Podaj szerokosc wykresu: ");
	scanf("%d", &szerokosc);
	printf("Podaj kolor wykresu: ");
	scanf("%s", kolor);

	plik=fopen("nazwa.txt","w");
	fprintf(plik,"<html>\n");
	fprintf(plik,"<head>\n");
	fprintf(plik, "<title>%s</title>", tytul);
	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,"['t->czas', 't->sygnal'],\n");

	for (i=0;i<t->ilosc;i++)
	{
		fprintf(plik,"[%.3lf, %lf]\n", t->czas[i], t->sygnal[i]);
	}

	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: ['%s']\n", kolor);
	fprintf(plik,"}\n");
	fprintf(plik,");\n");
	fprintf(plik,"}\n");
	fprintf(plik,"</script>\n");
	fprintf(plik,"</head>\n");
	fprintf(plik,"<body>\n");
	fprintf(plik,"<p><center><b>%s</b></center></p>\n", tytul);
	fprintf(plik,"<div id=\"chart_div\" style=\"width: %dpx; height: %dpx;\"></div>\n", szerokosc, wysokosc);
	fprintf(plik,"<p><b>Nazwa pliku:</b>Przetwarzanie sygnalu </p>\n");
	fprintf(plik,"</body>\n");
	fprintf(plik,"</html>\n");

	fclose(plik);
} 
0

Którego słowa nie rozumiesz w komunikacie systemu?
Czego oczekujesz po tej instrukcji?
Zawsze możesz zrobić coś takiego:

system("\"c:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" wykres.html");
0

Z tego co wiem to instrukcja system(wykres.html) jest potrzebna do wyświetlenia tego wykresu. Pamiętam że kiedyś w jakimś programie który robiłem (niestety już go nie mam) miałem taką samą instrukcję i wykres wyświetlało.
Po zastanowieniu się domyślam się, że jest problem w tym, że program nie ma tego w pamięci jako wykres.html i instrukcja system() nie wie co otworzyć.

0

Nie ma znaczenia co "program ma w pamięci". Polecenie system() wywołuje polecenie systemowe podane w parametrze. To dokładnie tak samo jakbyś wpisał w konsoli wykres.html w katalogu, z którego uruchamiasz swój program. Jeśli system będzie wiedział co z tym zrobić - np. plik istnieje i zarejestrowano dla niego jakiś domyślny program, z którego ma się otworzyć to coś się wydarzy inaczej - tak jak u Ciebie - nie.

0

system("wykres.html") jest równoważne otworzeniu konsoli (cmd) i wpisaniu tam wykres.html. Spróbuj.

0

Ok wiem gdzie był błąd

 plik=fopen(nazwa,"w");
  • tak ma być
    Tylko, że nie wyświetla tego wykresu. Myślę, że sobie z tym poradzę - jak nie, będę pisał.
    Jeszcze raz wielkie dzięki za pomoc.
0

A jednak sobie nie radzę. Jeśli ktoś wie w czym jest problem - bardzo proszę o pomoc.
Dzięki

0
plik=fopen("nazwa.txt","w+");
0

Nie radzę sobie z wyświetleniem wykresu. Błąd, który miałem na początku już poprawiłem (post wyżej). Teraz otwiera się nowa karta w przeglądarce, jest tytuł, nazwa wykresu, ale samego wykresu nie ma.

0

No to włącz debugowanie skryptu w przeglądarce.

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