Błąd przy wyświetlaniu wykresu

Odpowiedz Nowy wątek
2014-11-15 13:49
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);
} 
edytowany 1x, ostatnio: ...ajfa, 2014-11-15 13:50

Pozostało 580 znaków

2014-11-15 14:02
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");

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-11-15 14:02

Pozostało 580 znaków

2014-11-15 14:34
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ć.

edytowany 1x, ostatnio: ...ajfa, 2014-11-15 14:36

Pozostało 580 znaków

2014-11-15 14:47
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.

edytowany 1x, ostatnio: sihox, 2014-11-15 14:48

Pozostało 580 znaków

2014-11-15 14:48
0

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

Pozostało 580 znaków

2014-11-15 15:08
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.
edytowany 2x, ostatnio: ...ajfa, 2014-11-15 15:09

Pozostało 580 znaków

2014-11-15 17:13
0

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

Pozostało 580 znaków

2014-11-15 19:11
0
plik=fopen("nazwa.txt","w+");

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-11-15 21:38
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.

edytowany 1x, ostatnio: ...ajfa, 2014-11-15 21:38

Pozostało 580 znaków

2014-11-15 22:05
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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