Codice: Seleziona tutto
echo 'plot x**2' | gnuplot -persistCodice: Seleziona tutto
echo 'plot x**2' | gnuplot -persist
Codice: Seleziona tutto
system("echo 'plot x**(1/n)' | gnuplot -persist"); Codice: Seleziona tutto
line 0: undefined variable: nSe n è una variabile bash metti il dollaro davanti: $ncristian_c ha scritto: Ti ringrazio tantissimo per i suggerimenti su come realizzare la procedura
Ho modificato la funzione così:ma quando eseguo con ./radice ottengo:Codice: Seleziona tutto
system("echo 'plot x**(1/n)' | gnuplot -persist");Come si fa a passare il parametro n alla funzione? >:(Codice: Seleziona tutto
line 0: undefined variable: n

non funziona... ::) In esecuzione ricevo:Se n è una variabile bash metti il dollaro davanti: $n
Codice: Seleziona tutto
gnuplot> plot x**(1/$n)
^
line 0: Column number expected
togli gli apici singoli e mettili doppi altrimenti considera il nome della variabile come stringa...cristian_c ha scritto:non funziona... ::) In esecuzione ricevo:Se n è una variabile bash metti il dollaro davanti: $nCodice: Seleziona tutto
gnuplot> plot x**(1/$n) ^ line 0: Column number expected
Codice: Seleziona tutto
#! /bin/bash
n=5
echo "plot x**(1/$n)" | gnuplot -persist
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm
radice.c: In function ‘main’:
radice.c:49: error: expected ‘)’ before ‘plot’
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
Devi aver fatto qualche errore con gli apici o le parentesi... Ricontrolla o posta qui il codice...cristian_c ha scritto: in compilazione ricevo l'errore:Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm radice.c: In function ‘main’: radice.c:49: error: expected ‘)’ before ‘plot’ cristiancozzolino@cristiancozzolino-laptop:~/programmazione$

Codice: Seleziona tutto
#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("echo "plot x**(1/$n)" | gnuplot -persist");
}
Codice: Seleziona tutto
system("echo "plot x**(1/$n)" | gnuplot -persist"); Codice: Seleziona tutto
system("echo \"plot x**(1/$n)\" | gnuplot -persist"); 
già, scusami, non ci avevo pensato! :-[Zoff ha scritto: Cambia:in:Codice: Seleziona tutto
system("echo "plot x**(1/$n)" | gnuplot -persist");Codice: Seleziona tutto
system("echo "plot x**(1/$n)" | gnuplot -persist");
Codice: Seleziona tutto
gnuplot> plot x**(1/)
^
line 0: invalid expression
Ovvio... Stai usando C mica bash -.-cristian_c ha scritto:già, scusami, non ci avevo pensato! :-[Zoff ha scritto: Cambia:in:Codice: Seleziona tutto
system("echo "plot x**(1/$n)" | gnuplot -persist");Codice: Seleziona tutto
system("echo "plot x**(1/$n)" | gnuplot -persist");
Ok, ora l'errore in compilazione si è risolto, ma in esecuzione ottengo:grazie ancora per la pazienzaCodice: Seleziona tutto
gnuplot> plot x**(1/) ^ line 0: invalid expression![]()
Codice: Seleziona tutto
system("echo "plot x**(1/"+n+")" | gnuplot -persist");
non ho capito bene, puoi rispiegarmelo? :-[Se la variabile n p una variabile C:
ti riferisci al linguaggio bash?Meglio se studi un po' piu' il linguaggio prima di andare avanti...
No mi riferisco al C... Ho corretto la p in realtà era una è...cristian_c ha scritto:non ho capito bene, puoi rispiegarmelo? :-[Se la variabile n p una variabile C:
ti riferisci al linguaggio bash?Meglio se studi un po' piu' il linguaggio prima di andare avanti...

Codice: Seleziona tutto
system("echo \"plot x**(1/"+n+")\" | gnuplot -persist");Codice: Seleziona tutto
system("echo \"plot x**(1/%d)\" | gnuplot -persist",n);Scusa errore mio... Non sono abituato al C...cristian_c ha scritto:forse ho capito: basta modificare l'istruzione così:Codice: Seleziona tutto
system("echo "plot x**(1/"+n+")" | gnuplot -persist");Codice: Seleziona tutto
system("echo "plot x**(1/%d)" | gnuplot -persist",n);
Codice: Seleziona tutto
int n = 5;
char comando[100];
sprintf(comando,"echo "plot x**(1/%d)" | gnuplot -persist",n);
system(comando);
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~$ cd programmazione/
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm
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
Warning: empty y range [1:1], adjusting to [0.99:1.01]
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
** (<unknown>:7932): WARNING **: Failed to send buffer
<unknown>: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
anziché mettere 1/n prova a calcolarlo e poi passarlo:cristian_c ha scritto: Comunque grazie ancora tantissimo per il supporto! È stato fatto un passo in avanti.
Speriamo di poter raggiungere degli sviluppi, magari vedo poi un po' cosa fare.![]()
Codice: Seleziona tutto
int n = 5;
float f = 1/n;
char comando[100];
sprintf(comando,"echo "plot x**(%f)" | gnuplot -persist",f);
system(comando);
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~$ cd programmazione/
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm
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
Warning: empty y range [1:1], adjusting to [0.99:1.01]
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
** (<unknown>:8115): WARNING **: Failed to send buffer
<unknown>: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
Codice: Seleziona tutto
float f = 1/(float)n;
Codice: Seleziona tutto
cristiancozzolino@cristiancozzolino-laptop:~$ cd programmazione/
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$ gcc radice.c -o radice -lm
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
cristiancozzolino@cristiancozzolino-laptop:~/programmazione$
** (<unknown>:8248): WARNING **: Failed to send buffer
<unknown>: Fatal IO error 11 (Risorsa temporaneamente non disponibile) on X server :0.0.
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti