Oppure

Loading
21/11/13 20:29
R4_p_4891.mv
Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][{parsed_message}]
[1][w][h][a][t][{parsed_message}]
[2][a][{parsed_message}]
[3][b][e][a][u][t][i][f][u][l][{parsed_message}]
[4][w][o][r][l][d][{parsed_message}]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
]
[1][w][h][a][t][Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][{parsed_message}]
[1][w][h][a][t][{parsed_message}]
[2][a][{parsed_message}]
[3][b][e][a][u][t][i][f][u][l][{parsed_message}]
[4][w][o][r][l][d][{parsed_message}]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
]
[2][a][Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][{parsed_message}]
[1][w][h][a][t][{parsed_message}]
[2][a][{parsed_message}]
[3][b][e][a][u][t][i][f][u][l][{parsed_message}]
[4][w][o][r][l][d][{parsed_message}]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
]
[3][b][e][a][u][t][i][f][u][l][Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][{parsed_message}]
[1][w][h][a][t][{parsed_message}]
[2][a][{parsed_message}]
[3][b][e][a][u][t][i][f][u][l][{parsed_message}]
[4][w][o][r][l][d][{parsed_message}]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
]
[4][w][o][r][l][d][Ciao a tutti,

dovrei realizzare questo: un programmino semplice semplice solo che non ne riesco a venirne a capo.
Siccome l'argomento è basilare, credo sia interessante a futura memoria anche per altri alle prime armi come me.

devo prendere una frase (nota bene) a caso in input (ese a caso: "hello! What a beautiful world";)
e stamparla al contrario (ese: "beatiful a what hello!";).

Mi sono spiegato bene :( ? Non dobbiamo, insomma, rigirare la stringa al contrario ma invertire l'ordine delle parole!

Dunque io ho pensato che la soluzione più ovvia fosse un array bidimensionale dinamico.

[0][h][e][l][l][o][{parsed_message}]
[1][w][h][a][t][{parsed_message}]
[2][a][{parsed_message}]
[3][b][e][a][u][t][i][f][u][l][{parsed_message}]
[4][w][o][r][l][d][{parsed_message}]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
]

Ora:
1) occorre allocare dinamicamente la memoria per la colonna di puntatori (a puntatore?) lunga quanto sono le parole, e le parole le vorrei dividere solo dallo spazio, non dall'invio (con l'invio vorrei terminare l'emissione della frase generale)!
2) Ogni stringa, allocata dinamicamente anche essa deve contenere una parola.
3) Ogni stringa deve essere "attaccata" (ed è qui il mio grande problema) alla colonna come da figura.

Io ho pensato alle funzioni di libreria per strcat. Ho pensato ad un buffer, ad un char **ptr etc etc
ma non ci cavo un ragno da un buco!

Chi mi aiuta?

Grazie mille in anticipo,

mv

Ps io intanto continuo a sbatterci la testa, ché tanto questo è il destino dei programmatori ;)
Poi vorrei essere collaborativo il più possibile :k: e non stare ad aspettare la pappa pronta!
aaa
21/11/13 21:47
TheDarkJuster
puoi fare così: alloca un array di N puntatori a char, con N numero delle parole. Per ogni puntatore alloca X + 1 byte in memoria, con X numero di lettere in una singola parola. Il + 1 perchè alla fine deve esserci il carattere terminatore ( 'puoi fare così: alloca un array di N puntatori a char, con N numero delle parole. Per ogni puntatore alloca X + 1 byte in memoria, con X numero di lettere in una singola parola. Il + 1 perchè alla fine deve esserci il carattere terminatore ( '{parsed_message}' ). Poi crei una stringa e fai un sacco di strcat. Questo ultimo pezzo è il meno impegnativo, e dipende dal primo........ Mi pare una soluzione sensata.......' ). Poi crei una stringa e fai un sacco di strcat. Questo ultimo pezzo è il meno impegnativo, e dipende dal primo........ Mi pare una soluzione sensata.......
aaa
22/11/13 0:15
nessuno
Parlando di semplice visualizzazione io opterei per un semplice approccio ricorsivo

void getword(char *p)
{
	if(!p) return;
	getword(strtok(NULL, " "));
	printf("%s ", p);
}

int main ()
{
	char str[] = "invertire l'ordine delle parole";
	getword(strtok(str, " "));

	return 0;
}
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.