error C2143: syntax error : missing ';' before 'type'

Odpowiedz Nowy wątek
2012-11-17 21:12

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Witam mam problem z poniższym programem . Cały czas wyskakuje mi error C2143: syntax error : missing ';' before 'type' chociaz pozmienialem typy zmiennych i pozornie wszystko jest dobrze.
(program ten tworzy sygnal i wyswietlka go w google chart)
Z góry dzieki za pomoc.

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

void wykres(int,float, float, char);
void wykres15(float
,float*,float,float,float,float,float,int,int,int);

int main(void)
{
float tabx,taby;
float time,ferq,T,dt,ampl; //T - okres, dt - skok czasu, taby - wskaznik na tablice wartosci
int i,ind,allsamp,nP,lP,samp; //nP - liczba okresow
int p1,p2; //przedzialy, w ktorych generowany jest jeden okres
int a;
//obliczanie parametrow sygnalu
T = 1/ferq; //okres
dt = T / samp; //skok czsu
nP = (int)ceil(time / T); //liczba okresow
allsamp = samp
nP; //liczba wszystkich probek

//wprowadzanie zmiennych
   printf("Podaj parametry sygnalu: \n");
printf("Amplituda: ");
scanf("%f",&ampl);
printf("Czestotliwosc [Hz]: ");
scanf("%f",&ferq);
printf("Czas trwania: ");
scanf("%f",&time);
printf("Liczba probek na okres (liczba calkowita, np. 200): ");
scanf("%d",&samp);

//dynamiczna alokacja tablicy z wyzerowaniem 
tabx = (float*)calloc(allsamp, sizeof(float));
taby = (float*)calloc(allsamp, sizeof(float));

//generowanie osi czasu
for(i=0;i<allsamp;i++)
{
    tabx[i] = i*dt;
}

wykres15(taby,tabx,ampl,ferq,time,T,dt,samp,allsamp,nP); // WYKRES 15
wykres(allsamp,tabx,taby,"wykres.html");

//GENEROWANIE WYKRESU 15
void wykres15(float tabx,float taby,float ampl,float dt,float T,float time,float ferq,int nP,int samp,int allsamp)
{

int i,ind,lP,p1,p2;
for(lP=0;lP<nP;lP++)
{

    p1 = samp/2;
    p2 = samp;

         for(i=0;i<p1;i++)
         {
         ind = i+samp*lP;;
         taby[ind]=ampl*i;
         }

         for(i=p1;i<p2;i++)
         {
            ind = i+samp*lP;
             taby[ind]=(((p1+1)-i)*(p2-i));

         }
   }

}

void wykres(int l,float tx, float ty, char nazwa[]) //funkcja generujaca kod html dla wykresu Google Chart
{
FILE *fp;
int i;

printf("Rysuj %s\n",nazwa);
fp = fopen(nazwa,"w");

fprintf(fp,"<html>\n");
fprintf(fp,"<head>\n");
fprintf(fp,"<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>\n");
fprintf(fp,"<script type=\"text/javascript\">\n");
fprintf(fp,"google.load(\"visualization\", \"1\", {packages:[\"corechart\"]});\n");
fprintf(fp,"google.setOnLoadCallback(drawChart);\n");
fprintf(fp,"function drawChart() {\n");
fprintf(fp,"var data = google.visualization.arrayToDataTable([\n");

fprintf(fp,"['i', 'Wartosc'],\n");
for(i=0;i<l;i++){
    fprintf(fp,"[%f, %f],\n",tx[i],ty[i]);   //przekazanie danych na wykres
}
fprintf(fp,"[%f, %f]\n",tx[i-1],ty[i-1]); 
fprintf(fp,"]);\n");

fprintf(fp,"var options = {\n");
fprintf(fp,"title: 'Wybrany sygnal'\n");
fprintf(fp,"};\n");

fprintf(fp,"var chart = new google.visualization.LineChart(document.getElementById('chart_div'));\n");
fprintf(fp,"chart.draw(data, options);\n");
fprintf(fp,"}\n");
fprintf(fp,"</script>\n");
fprintf(fp,"</head>\n");
fprintf(fp,"<body>\n");
fprintf(fp,"<div id=\"chart_div\" style=\"width: 900px; height: 500px;\"></div>\n");
fprintf(fp,"</body>\n");
fprintf(fp,"</html>\n");

fclose(fp);
system(nazwa);      //uruchomienie pliku html

}

Możesz z łaski swojej powiedzieć która linia powoduje błąd? Przecież kompilator to mówi. Poza tym używaj znaczników <code>. - Endrju 2012-11-17 21:18

Pozostało 580 znaków

2012-11-17 21:20

Rejestracja: 17 lat temu

Ostatnio: 4 tygodnie temu

Lokalizacja: Katowice

0

Czy mi się wydaje, czy funkcja wykres15 jest wewnątrz main? Dokładnie to main nie ma w ogóle zamykającej klamry.


"(...) otherwise, the behavior is undefined".
edytowany 1x, ostatnio: Endrju, 2012-11-17 21:21

Pozostało 580 znaków

2012-11-17 21:25

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

to mogl byc blad przy kopiowaniu ale funkcja wykres 15 jest wewnatrz main .Czy to źle ze wykres15 jest wewnatrz maina?

edytowany 1x, ostatnio: jacekbum, 2012-11-17 21:27

Pozostało 580 znaków

2012-11-17 21:33

Rejestracja: 17 lat temu

Ostatnio: 4 tygodnie temu

Lokalizacja: Katowice

0

Bardzo źle. W C/C++ nie ma funkcji zagnieżdżonych. Skąd taki pomysł? Każda z tych funkcji musi być zdefiniowana w zakresie globalnym, czyli mówiąc prosto poza main.

(GCC ma ich obsługę, ale to bez znaczenia)


"(...) otherwise, the behavior is undefined".

Pozostało 580 znaków

2012-11-17 21:37

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Dzieki ! :)

Pozostało 580 znaków

Odpowiedz

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