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

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

}

0

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

0

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

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)

0

Dzieki ! :)

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