Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - eliminare parti di un array
Forum - C/C++ - eliminare parti di un array - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 17:45
Sabato, 21/07/2012
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 ?

PM Quote
Avatar
orion3 (Normal User)
Rookie


Messaggi: 28
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 19:00
Sabato, 21/07/2012
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
PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 19:08
Sabato, 21/07/2012
non ho ben capito :(
mi potresti scrivere il pezzo di codice corretto ?

PM Quote
Avatar
orion3 (Normal User)
Rookie


Messaggi: 28
Iscritto: 16/04/2011

Segnala al moderatore
Postato alle 19:31
Sabato, 21/07/2012
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++

  1. j = 0; //inizializzo l'indice del secondo vettore
  2. for(i=0; i != sizeof(a); i++){
  3.     if((a[i] == 'e') || (a[i] == 'o')) {
  4.              b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
  5.              j++; //incremento indice secondo array
  6.       }
  7. }


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
PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 1:11
Domenica, 22/07/2012
Testo quotato

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++

  1. char *str = "exoyezP(x,y,z)";
  2. 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 ?

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 1:14
Domenica, 22/07/2012
Testo quotato

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++

  1. j = 0; //inizializzo l'indice del secondo vettore
  2. for(i=0; i != sizeof(a); i++){
  3.     if((a[i] == 'e') || (a[i] == 'o')) {
  4.              b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
  5.              j++; //incremento indice secondo array
  6.       }
  7. }


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

PM Quote
Avatar
Ultimo (Member)
Guru


Messaggi: 877
Iscritto: 22/05/2010

Segnala al moderatore
Postato alle 0:04
Lunedì, 23/07/2012
Testo quotato

Postato originariamente da Dice:

Testo quotato

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++

  1. j = 0; //inizializzo l'indice del secondo vettore
  2. for(i=0; i != sizeof(a); i++){
  3.     if((a[i] == 'e') || (a[i] == 'o')) {
  4.              b[j]=a[i]; //metto l'elemento del vettore a nel vettore b
  5.              j++; //incremento indice secondo array
  6.       }
  7. }


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

PM Quote
Avatar
Dice (Normal User)
Expert


Messaggi: 238
Iscritto: 26/11/2011

Segnala al moderatore
Postato alle 0:38
Lunedì, 23/07/2012
.....mmmmm...... eeemmmm.....

ooooppppssss...
scusa scusa e scusa ancora, non l'avevo visto per davveroooo

XD lol
ahahahh

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo