Code blocks

squalllionheart
Devo stampare un grafico con code blocks che devo fare?

Risposte
apatriarca
Vuoi insomma sapere come scrivere un programma in C o C++ che visualizzi un grafico? Che genere di grafico ti serve?

squalllionheart
devo graficare questo programma:



/* Programma che utilizza l'aritmetica degli intervalli
per determinare la mappa standard*/

# include
# include

# define N 1000
# define pi (4*atan(1))

double precisione ();
double Up (double );
double Down (double);
void Somma (double a[], double b[], double c[]);
void Differenza (double a[], double b[], double c[]);
void Prodotto (double a[], double b[], double c[]);
void Divisione (double a[], double b[], double c[]);

double max (double x, double y);
double min (double x, double y );

void Seno (double x[], double ris[]);

int main(){

FILE *output1;
FILE *output2;

output1= fopen("meno.dat","w");
output2= fopen("piu.dat","w");



double aux1[2], aux2[2], aux3[2];
double uno[2]={1., 1.};
double x[2]={pi, pi};
double y[2]={0.618, 0.618};
double eps[2]={0.001, 0.001};
double sx[2], aux[2], w[2], z[2], periodo[2]={2*pi,2*pi};
double e;


int j;
/* x[0]=-3*pi;
aux1[0]=(x[0]-(int)(x[0]/(2*pi))*2*pi);
aux1[1]=fmod(x[0],2*pi);
printf("%f %f\n", aux1[0], aux1[1]);*/
e=precisione();
for(j=1;j<=N;j++){
/*if(x[0]<0 ||x[0]>2*pi || x[1]<0 || x[1]>2*pi){*/


x[0]=(x[0]-(int)(x[0]/(2*pi))*2*pi);
x[1]=(x[1]-(int)(x[1]/(2*pi))*2*pi);
if(x[0]<0)
x[0]=2*pi+x[0];
if(x[1]<0)
x[1]=2*pi+x[1];



fprintf(output1, "%f %f \n", x[0], y[0]);
fprintf(output2, "%f %f \n", x[1], y[1]);

Seno(x,sx);
Prodotto(sx,eps,aux);
Somma(y,aux,y);

Somma(x,y,x);

}
fclose(output1);
fclose(output2);
}


double max (double x, double y){

if(x>=y)
return(x);
else
return(y);
}

double min (double x, double y){

if(x<=y)
return(x);
else
return(y);
}

double precisione(){

double eps=1, eps_bar, x, x_bar;

do{
eps_bar=eps;
eps=eps*0.5;
x=1+eps;
x_bar=x-1;
}
while(x_bar!=0);

return(eps_bar);

}


double Up (double c){

double e;

e=precisione();
if (c>0)
return(c*(1+e));
else
return(c*(1-e));

}

double Down (double c){

double e;

e=precisione();
if (c>0)
return(c*(1-e));
else
return(c*(1+e));


}

void Somma (double a[], double b[], double c[]){

c[0]=Down(a[0]+b[0]);
c[1]=Up(a[1]+b[1]);

}

void Differenza (double a[], double b[], double c[]){
if(b[0]>0){
c[0]=Down(a[0]-b[0]);
c[1]=Up(a[1]-b[1]);
}
if(b[1]<0){
b[0]=-b[0];
b[1]=-b[1];
Somma(a,b,c);
}
}

void Prodotto (double a[], double b[], double c[]){

if(a[0]>=0 && a[1]>=0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]*b[0]);
c[1]=Up(a[1]*b[1]);
}

if(a[0]>=0 && a[1]>=0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]*b[0]);
c[1]=Up(a[0]*b[1]);
}

if(a[0]>=0 && a[1]>=0 && b[0]<0 && b[1]>=0)
{
c[0]=Down(a[1]*b[0]);
c[1]=Up(a[1]*b[1]);
}

if(a[0]<0 && a[1]<0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]*b[1]);
c[1]=Up(a[1]*b[0]);
}

if(a[0]<0 && a[1]<0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]*b[1]);
c[1]=Up(a[0]*b[0]);
}

if(a[0]<0 && a[1]<0 && b[0]<0 && b[1]>=0)
{
c[0]=Down(a[0]*b[1]);
c[1]=Up(a[0]*b[0]);
}

if(a[0]<0 && a[1]>=0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]*b[1]);
c[1]=Up(a[1]*b[1]);
}

if(a[0]<0 && a[1]>=0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]*b[0]);
c[1]=Up(a[0]*b[0]);
}

if(a[0]<0 && a[1]>=0 && b[0]<0 && b[1]>=0)
{
c[0]=Down(min(a[0]*b[1],a[1]*b[0]));
c[1]=Up(max(a[0]*b[0],a[1]*b[1]));
}

}

void Divisione (double a[], double b[], double c[]){

if(a[0]>=0 && a[1]>=0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]/b[1]);
c[1]=Up(a[1]/b[0]);
}

if(a[0]>=0 && a[1]>=0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]/b[1]);
c[1]=Up(a[0]/b[1]);
}

if(a[0]<0 && a[1]<0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]/b[0]);
c[1]=Up(a[1]/b[1]);
}

if(a[0]<0 && a[1]<0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]/b[0]);
c[1]=Up(a[0]/b[1]);
}

if(a[0]<0 && a[1]>=0 && b[0]>=0 && b[1]>=0)
{
c[0]=Down(a[0]/b[0]);
c[1]=Up(a[1]/b[0]);
}

if(a[0]<0 && a[1]>=0 && b[0]<0 && b[1]<0)
{
c[0]=Down(a[1]/b[1]);
c[1]=Up(a[0]/b[1]);
}
if(b[0]<=0 && b[1]>=0)
{
printf("Errore divisione per zero\n");

}
}

void Seno (double x[], double ris[]){

double periodo[2], a[2], w[2], z[2], fatt[2],pot_x[2],aux[2], pot_1[2];
int j;

a[0]=x[0];
a[1]=x[1];

periodo[0]=2*pi;
periodo[1]=2*pi;
pot_1[0]=pot_1[1]=-1;

fatt[0]=1;
fatt[1]=1;
ris[0]=a[0];
ris[1]=a[1];
pot_x[0]=a[0];
pot_x[1]=a[1];

for(j=1;j Prodotto(pot_x,a,w);
Prodotto(w,a,pot_x);

fatt[0]=fatt[0]*(2*j)*(2*j+1);
fatt[1]=fatt[0];
Divisione(pot_x,fatt,z);
Prodotto(pot_1,z,aux);

Somma(ris,aux,ris);

pot_1[0]=pot_1[0]*(-1);
pot_1[1]=pot_1[0];
}

}

apatriarca
Usa il tag [ code ] per inserire il codice in modo da formattarlo correttamente. Il tuo programma crea quindi due file di testo con estensione ".dat" in cui ogni riga contiene un punto del tuo grafico. Puoi usare un programma esterno come excel o matlab per visualizzare il grafico o devi scrivere il codice in C? Puoi, nel caso volessi usare un programma esterno, scrivere su file usando un formato leggermente diverso?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.