[Risolto] Variabili... variabili

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
edgy
Prode Principiante
Messaggi: 134
Iscrizione: sabato 28 ottobre 2006, 14:32

[Risolto] Variabili... variabili

Messaggio da edgy »

Se io un vettore chiamato vet con il contenuto questo
      _____________
vet=| v | a | r | \0 |

lo passo ad una funzione

stranamente var è il nome di una variabile, posso far stampare il valore di var partendo dal contenuto del vettore?
Cioè usare il contenuto di un vettore di caratteri come nome di una variabile?

E' possibile fare in C una cosa del genere?
Ultima modifica di edgy il mercoledì 20 giugno 2007, 18:01, modificato 1 volta in totale.
Feanaro
Prode Principiante
Messaggi: 76
Iscrizione: venerdì 2 marzo 2007, 16:47

Re: Variabili... variabili

Messaggio da Feanaro »

Secondo me no.  (nono)

Non ne sono completamente sicuro, ma la gestione delle variabili da parte del linguaggio C è diversa da altri linguaggi che invece sono interpretati quali il php (me l'hai detto tu!!), quindi non penso tu possa fargli riconoscere il nome di una variabile attraverso una stringa, anche se sarebbe bello...

Ma perché non studi inglese al posto di pensare a 'ste cazzate??  ;)
Ultima modifica di Feanaro il venerdì 8 giugno 2007, 16:05, modificato 1 volta in totale.
Avatar utente
marko782
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 284
Iscrizione: sabato 24 marzo 2007, 12:53
Località: Monza (MI)

Re: Variabili... variabili

Messaggio da marko782 »

non credo proprio sia possibile... e tra l' altro ci sarà senz' altro un' altra soluzione (3 altri in una frase sola, sono un mito!)
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Variabili... variabili

Messaggio da difesaparcosempione »

No, Nada, Niet, Nein !
8)
edgy
Prode Principiante
Messaggi: 134
Iscrizione: sabato 28 ottobre 2006, 14:32

Re: Variabili... variabili

Messaggio da edgy »

peccato io ci speravo :(
vah beh vorrà dire che la funziona che risolverà qualsiasi problema possibile e immaginabile non la scriverò in c  ;D ;D ;D
marcellinux
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 500
Iscrizione: lunedì 9 ottobre 2006, 16:19
Località: Termoli (Campobasso)
Contatti:

Re: Variabili... variabili

Messaggio da marcellinux »

cmq può servire il c, altrimenti il php nn lo capiresti , le stringhe in c sono dichiarate con char e ogni stringa in c termina con il tappo-terminatore \0
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Variabili... variabili

Messaggio da thelo »

se intendi farlo LETTERALMENTE, ti hanno risposto in tanti  ;)
cmq esiste la possibilità degli array associativi, con cui non accedi tramite il numero di sequenza, ma tramite un identificativo(una stringa)...
in c++ è già implementato...
ti consiglio una googolata  :)

Saluti
(b2b)
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Avatar utente
micettonero
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 772
Iscrizione: domenica 5 febbraio 2006, 11:49
Contatti:

Re: Variabili... variabili

Messaggio da micettonero »

Sì può fare solo con Python  (rotfl) (rotfl)
Linux Registered User #409415
"Nessuno può fabbricare una macchina tanto intelligente che possa essere
usata da uno sciocco" - Confucio
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Variabili... variabili

Messaggio da Guiodic »

micettonero ha scritto: Sì può fare solo con Python  (rotfl) (rotfl)
Perchè Python è interpretato, non compilato.
Avatar utente
micettonero
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 772
Iscrizione: domenica 5 febbraio 2006, 11:49
Contatti:

Re: Variabili... variabili

Messaggio da micettonero »

Guiodic ha scritto:
micettonero ha scritto: Sì può fare solo con Python  (rotfl) (rotfl)
Perchè Python è interpretato, non compilato.
Python è compilato al volo.
Linux Registered User #409415
"Nessuno può fabbricare una macchina tanto intelligente che possa essere
usata da uno sciocco" - Confucio
Avatar utente
jack84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: lunedì 12 febbraio 2007, 11:13

Re: Variabili... variabili

Messaggio da jack84 »

micettonero ha scritto:
Guiodic ha scritto:
micettonero ha scritto: Sì può fare solo con Python  (rotfl) (rotfl)
Perchè Python è interpretato, non compilato.
Python è compilato al volo.
Che differenza c'e' tra compilato al volo e interpretato? Cioè viene generato a run-time il file eseguibile?
Non sempre si può prevedere, ma ci si può sempre preparare
Avatar utente
micettonero
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 772
Iscrizione: domenica 5 febbraio 2006, 11:49
Contatti:

Re: Variabili... variabili

Messaggio da micettonero »

Esatto. Se i linguaggi interpretati vengono eseguiti linea per linea (grossolanamente), Python viene prima compilato e poi eseguito.
Linux Registered User #409415
"Nessuno può fabbricare una macchina tanto intelligente che possa essere
usata da uno sciocco" - Confucio
Avatar utente
jack84
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: lunedì 12 febbraio 2007, 11:13

Re: Variabili... variabili

Messaggio da jack84 »

Esatto. Se i linguaggi interpretati vengono eseguiti linea per linea (grossolanamente), Python viene prima compilato e poi eseguito.
Con questo sistema sembrerebbe fondere i vantaggi di linguaggi compilati e interpretati (ma anche i difetti...)
Non sempre si può prevedere, ma ci si può sempre preparare
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: Variabili... variabili

Messaggio da paper0k »

C'è un trucco ;D

Codice: Seleziona tutto

#include <stdio.h>

#define print(x) _print(#x, x)
void _print(char *name, int val) {
	printf ("%s <%d>\n", name, val);
}

int main() {
	int x=10;
	int y=20;
	print(x);
	print(y);
	return(0);
}
;)
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Variabili... variabili

Messaggio da thelo »

paper0k ha scritto: C'è un trucco ;D

Codice: Seleziona tutto

#include <stdio.h>

#define print(x) _print(#x, x)
void _print(char *name, int val) {
	printf ("%s <%d>\n", name, val);
}

int main() {
	int x=10;
	int y=20;
	print(x);
	print(y);
	return(0);
}
;)
qual è il significato del carattere # prima della variabile?
e cmq mi sembra che non debba funzionare su print(y)  :P
Ultima modifica di thelo il mercoledì 13 giugno 2007, 9:47, modificato 1 volta in totale.
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Avatar utente
Onilrem
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 410
Iscrizione: mercoledì 25 aprile 2007, 22:27

Re: Variabili... variabili

Messaggio da Onilrem »

PREMESSA : ho programmato in Qbasic , GWBasic , VisualBasic , quindi non so niente di C++ , pero' trattandosi di Vettori e Variabili....
da quello che ho capito hai un vettore di caratteri (Stringa) che contiene il nome di una variabile
e tu vuoi che passando questo vettore succeda qualcosa legato alla Variabile...
Consiglio :
una procedura tipo :
Stampa la variabile col nome contenuto in vet
If vet = "var/0" then
print var/0
end
non e' indicata ?
-----------Onilrem---------
Da quando uso Linux , lavoro di piu' !
Avatar utente
ROS
Prode Principiante
Messaggi: 56
Iscrizione: martedì 31 ottobre 2006, 18:14

Re: Variabili... variabili

Messaggio da ROS »

se si trattasse di una stringa potresti usare qualcosa come eval (ma non mi ricordo se esiste in c).
Avatar utente
Guiodic
Accecante Asceta
Accecante Asceta
Messaggi: 28474
Iscrizione: martedì 24 aprile 2007, 15:28
Località: Roma
Contatti:

Re: Variabili... variabili

Messaggio da Guiodic »

Onilrem ha scritto: PREMESSA : ho programmato in Qbasic , GWBasic , VisualBasic , quindi non so niente di C++ , pero' trattandosi di Vettori e Variabili....
da quello che ho capito hai un vettore di caratteri (Stringa) che contiene il nome di una variabile
e tu vuoi che passando questo vettore succeda qualcosa legato alla Variabile...
Consiglio :
una procedura tipo :
Stampa la variabile col nome contenuto in vet
If vet = "var/0" then
print var/0
end
non e' indicata ?
-----------Onilrem---------
Ma se hai molte variabili dovresti fare tanti controlli ... non è pratico, oltre ad essere poco elegante.
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Variabili... variabili

Messaggio da thelo »

Onilrem ha scritto: PREMESSA : ho programmato in Qbasic , GWBasic , VisualBasic , quindi non so niente di C++ , pero' trattandosi di Vettori e Variabili....
da quello che ho capito hai un vettore di caratteri (Stringa) che contiene il nome di una variabile
e tu vuoi che passando questo vettore succeda qualcosa legato alla Variabile...
Consiglio :
una procedura tipo :
Stampa la variabile col nome contenuto in vet
If vet = "var/0" then
print var/0
end
non e' indicata ?
-----------Onilrem---------
beh certo, si può fare...
finchè il programma contiene 5 o 6 variabili  :D
se il programma se contiene 350 la cosa è per lo meno antiestetica  :)
senza contare il fatto che modificando il sorgente, ogni volta che aggiungi una nuona variabile dovresti modificare anche la funzione

Saluti
(b2b)
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
edgy
Prode Principiante
Messaggi: 134
Iscrizione: sabato 28 ottobre 2006, 14:32

Re: Variabili... variabili

Messaggio da edgy »

paper0k ha scritto: C'è un trucco ;D

Codice: Seleziona tutto

#include <stdio.h>

#define print(x) _print(#x, x)
void _print(char *name, int val) {
	printf ("%s <%d>\n", name, val);
}

int main() {
	int x=10;
	int y=20;
	print(x);
	print(y);
	return(0);
}
;)
mi spiegheresti perchè funziona questo trucco e che è quel cancelletto?
La mia idea era di avere una lista di strutture e fare una funzione tipo ordina lista, passando come parametro il campo della struttura su cui bisogna fare il controllo,
Se riuscissi a fare questo, avrei una funzione sola per ordinale qualsiasi tipo di lista senza più dover mettere mano alla funzione, ma semplicemente passando ogni volta il nome del campo diverso su cui fare il controllo.
Fino ad oggi credevo non fosse possibile, ma ci ho provato non si sa mai, e in effetti questo (per me strano) operatore "#" forse può aiutarmi, ma nulla può senza una delucidazione da parte di paper0k.
Va bene anche un qualsiasi link a qualche pagina che ne parli approfonditamente in modo da togliermi qualsiasi dubbio (basta che non sia in inglese ;) )
ahh perchè non posso usare il php (il mio linguaggio preferito) o altri linguaggi che permettono l'uso delle variabili di variabili?
Semplice perchè l'esame che devo dare è in c :D
Ultima modifica di edgy il mercoledì 13 giugno 2007, 23:43, modificato 1 volta in totale.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti