Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
Lo devo fare solo in C; ditemi una cosa: adesso ho bisogno di fare questa cosa:
io ho un array; di questo array voglio prendere solo alcuni elementi e metterli in un altro array; io avevo pensato di fare una cosa del genere:
array iniziale: exoyez
io addesso voglio prendere solo le "e" e le "o" e metterle in un altro array
for(i=0; i != '\0'; i++)
if((a == 'e') || (a == 'o'))
/*prendi e metti in un altro array*/
for(j=0; j!= '\0'; j++)
b[j]==a;
Dite che può andare bene ?
|
|
orion3 (Normal User)
Rookie
Messaggi: 28
Iscritto: 16/04/2011
|
se ho capito bene ciò che devi fare, la condizione d'uscita dei cicli for mi sembrano sbagliate perchè ci dovresti mettere la lunghezza del primo vettore e poi il secondo ciclo è superfluo perchè puoi metterci una variabile,come indice del secondo array, che viene incrementata ogni volta che si entra nell'if...
Ultima modifica effettuata da orion3 il 21/07/2012 alle 19:01 |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
non ho ben capito
mi potresti scrivere il pezzo di codice corretto ?
|
|
orion3 (Normal User)
Rookie
Messaggi: 28
Iscritto: 16/04/2011
|
premetto che non so molto di C però se non sbaglio c'è la funzione sizeof() che restitutisce la lunghezza di array statici, quindi il codice dovrebbe essere:
Codice sorgente - presumibilmente C/C++ |
j = 0; //inizializzo l'indice del secondo vettore
for(i=0; i != sizeof(a); i++){
if((a[i] == 'e') || (a[i] == 'o')) {
b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
j++; //incremento indice secondo array
}
}
|
dovrebbe essere così, informati solo su come funziona sizeof() o se esiste qualche altra funzione che ti permetta di sapere la lunghezza di un vettore...
P.S. ogni lettera della tua parola occupa una posizione nell'array ? perchè se non è così dovresti gestire una stringa
Ultima modifica effettuata da orion3 il 21/07/2012 alle 19:39 |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
Postato originariamente da pierotofy:
Devi solo eliminare i primi due caratteri oppure cercare all'interno della stringa per la presenza di "ex"?
Per i primi due caratteri potresti semplicemente avanzare il puntatore di due...
Codice sorgente - presumibilmente C/C++ |
char *str = "exoyezP(x,y,z)";
char *truncated = (str + 2); // "oyezP(x,y,z)"
|
|
Ei ei ei
grazie mille !!
La cosa che mi hai detto, funziona,e ti ringrazio molte...
l'unica cosa è che... l'eliminazione di elementi, oltre che nei primi 2 elementi, potrebbe avvenire anche in altre parti...
cosa mi consigli ? |
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
Postato originariamente da orion3:
premetto che non so molto di C però se non sbaglio c'è la funzione sizeof() che restitutisce la lunghezza di array statici, quindi il codice dovrebbe essere:
Codice sorgente - presumibilmente C/C++ |
j = 0; //inizializzo l'indice del secondo vettore
for(i=0; i != sizeof(a); i++){
if((a[i] == 'e') || (a[i] == 'o')) {
b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
j++; //incremento indice secondo array
}
}
|
dovrebbe essere così, informati solo su come funziona sizeof() o se esiste qualche altra funzione che ti permetta di sapere la lunghezza di un vettore...
P.S. ogni lettera della tua parola occupa una posizione nell'array ? perchè se non è così dovresti gestire una stringa |
Due cose:
1) visto che sei alle prime armi, ti informo subito che esiste la funzione strlen, che mi dice quanto è lunga la stringa
2)nella riga di codice che hai messo dentro all'if: b[j]=a così facendo missa che non va bene, perchè visto che non incrementi mai l'indice j, così facendo dovrebbe sostituire sempre lo stesso valore
o sbaglio ? non ne sono sicurissimo neanch'io del punto 2 |
|
Ultimo (Member)
Guru
Messaggi: 877
Iscritto: 22/05/2010
|
Postato originariamente da Dice:
Postato originariamente da orion3:
premetto che non so molto di C però se non sbaglio c'è la funzione sizeof() che restitutisce la lunghezza di array statici, quindi il codice dovrebbe essere:
Codice sorgente - presumibilmente C/C++ |
j = 0; //inizializzo l'indice del secondo vettore
for(i=0; i != sizeof(a); i++){
if((a[i] == 'e') || (a[i] == 'o')) {
b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
j++; //incremento indice secondo array
}
}
|
dovrebbe essere così, informati solo su come funziona sizeof() o se esiste qualche altra funzione che ti permetta di sapere la lunghezza di un vettore...
P.S. ogni lettera della tua parola occupa una posizione nell'array ? perchè se non è così dovresti gestire una stringa |
Due cose:
1) visto che sei alle prime armi, ti informo subito che esiste la funzione strlen, che mi dice quanto è lunga la stringa
2)nella riga di codice che hai messo dentro all'if: b[j]=a così facendo missa che non va bene, perchè visto che non incrementi mai l'indice j, così facendo dovrebbe sostituire sempre lo stesso valore
o sbaglio ? non ne sono sicurissimo neanch'io del punto 2 |
Non hai visto il j++ ?
If ok Then GOTO Avanza else GOTO Inizia
|
|
Dice (Normal User)
Expert
Messaggi: 238
Iscritto: 26/11/2011
|
.....mmmmm...... eeemmmm.....
ooooppppssss...
scusa scusa e scusa ancora, non l'avevo visto per davveroooo
XD lol
ahahahh
|
|