





cristian_c ha scritto:purtroppo è in c. Ti ringrazio comunque, ciao!






5.2 Can I use gnuplot routines for my own programs?
On systems supporting pipes, you can pipe commands to gnuplot from other programs. Many applications with gnuplot as the graphics engine, like Octave (http://www.octave.org), uses this method. This also works from a cgi script to drive gnuplot from a forms-based web page.
John Campbell (jdc@nauvax.ucc.nau.edu) modified a much earlier version of gnuplot (3.5) to be a library of C subroutines callable from a C program. Gnuplot itself has changed radically since then, and we are not aware of any plans to create a similar library based on the current version.






#include <stdio.h>
#include <math.h>
#define ERR 0.00001
main()
{
char *indice[]={"quadrata","cubica","quarta","quinta","sesta","settima","ottava","nona","decima"};
float a,b,m,x;
float fm,pot;
int n,i,res;
printf("\n// il programma calcola la radice\n// di un qualunque numero reale scelto dall'utente\n// con indice intero immesso da tastiera\n\n");
do {
printf("Inserire un indice valido per la radice(un numero intero da 1 a 10): ");
res=scanf("%d",&n);
while(getc(stdin)!='\n');
} while((n<1 || n>10) && (res==0));
do {
printf("Inserire un valore reale di cui calcolare la radice: ");
res=scanf("%f",&x);
while(getc(stdin)!='\n');
} while(res==0);
if (n%2==0 && x<0) printf("\nil valore inserito non è valido poichè non fa parte dell'insieme di definizione della radice\n");
else if (n==1) printf("\nla radice prima di %g è %g\n",x,x);
else if (x==1) printf("\nla radice %s di 1 è 1\n\n",indice[n-2]);
else {
if (x>1) {
a=1; b=x;
}
else if (x<-1) {
a=x; b=-1;
}
else {
a=-1; b=1;
}
do {
m=(a+b)/2;
pot=m;
for(i=1;i<n;i++) pot*=m;
fm=pot-x;
if (fm!=0) {
if (fm>0) b=m;
else a=m;
}
} while (fabs(fm)>ERR);
printf("\nla radice %s di %g è %g\n\n",indice[n-2],x,m);
}
if (1 <= n < 11)
system("gnuplot plot x**(1/n)");
}
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ ./radice
// il programma calcola la radice
// di un qualunque numero reale scelto dall'utente
// con indice intero immesso da tastiera
Inserire un indice valido per la radice(un numero intero da 1 a 10): 3
Inserire un valore reale di cui calcolare la radice: 45
la radice cubica di 45 è 3.55689
sh: Syntax error: "(" unexpected
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$


system("gnuplot plot 'x**(1/n)'")Cannot open load file 'plot'
line 0: util.c: No such file or directory

cristian_c ha scritto:se modifico l'ultima istruzione così:
- Codice: Seleziona tutto
system("gnuplot plot 'x**(1/n)'")
ricevo in output:
- Codice: Seleziona tutto
Cannot open load file 'plot'
line 0: util.c: No such file or directory
Avete un suggerimento perchè funzioni?
E poi sarebbe bello sapere come integrare gnuplot nel programma. Cioè se io voglio che appaia e rimanga fissa la finestra di gnuplot come posso fare?

(scherzo
)controlla bene nel manuale... Quel comando in realtà non funziona neanche nel terminale...
Ho provato. Chissà come mai... 
plot f(x)
Notiamo per inciso che per tracciare il grafico di una funzione, gnuplot ci sonsente di utilizzare
una sintassi pi` semplificata, ` infatti possibile evitare di definire preventivamente una funzione
e di scriverne la formula dopo il comando splot.

cristian_c ha scritto:ciao, zoff, hai fatto un grosso errore a rispondere al topic. Adesso ti perseguiterà per il resto dei tuoi giorni! :P (scherzo :D )controlla bene nel manuale... Quel comando in realtà non funziona neanche nel terminale...
è vero! (yes) Ho provato. Chissà come mai... ::)
Eppure nel manuale è scritto:plot f(x)Notiamo per inciso che per tracciare il grafico di una funzione, gnuplot ci sonsente di utilizzare
una sintassi pi` semplificata, ` infatti possibile evitare di definire preventivamente una funzione
e di scriverne la formula dopo il comando splot.
root@root# gnuplot
gnuplot> plot x**2
Zoff ha scritto:Infatit il manuale è corretto...
Devi prima avviare una sessione gnuplot e poi dare quel comando:
- Codice: Seleziona tutto
root@root# gnuplot
gnuplot> plot x**2


cristian_c ha scritto:Zoff ha scritto:Infatit il manuale è corretto...
Devi prima avviare una sessione gnuplot e poi dare quel comando:
- Codice: Seleziona tutto
root@root# gnuplot
gnuplot> plot x**2
e come faccio allora con la funzione system?

Dicevo di leggere il manuale proprio per quello...



cristian_c ha scritto:Dicevo di leggere il manuale proprio per quello...
ma stai parlando del manuale di gnuplot?
Perche se è così, non si trova chiaramente nulla su system, in quanto essa è una funzione del c
