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++ - funzione che non va..
Forum - C/C++ - funzione che non va..

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 22:51
Venerdì, 12/12/2008
void colora(char string[300])
     {
     int i = 1;
       if(string[ i] == "f")
       {
           i++;
           printf("\n%c\n", string[ i]);
       }
     }


mi da un errore nel rigo della if, perchè?

o meglio così?

void colora(char string[300])
     {
     int i = 1;
     char par = 'f';
       while (strcmp(string[ i],par) != 0)
       {
           i++;
           printf("\n%c\n", string[ i]);
       }
     }  

edit: ho trovato l'errore.. si tratta della parametro in entrata.
forse se spiego cosa vorrei fare è più facile per tutti.
Data una stringa, vorrei prendere una sottostringa compresa tra due caratteri ( e ).
come fare?
grazie

Ultima modifica effettuata da feddur il 12/12/2008 alle 23:42
PM Quote
Avatar
mc (Normal User)
Rookie


Messaggi: 52
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 17:40
Sabato, 13/12/2008
È sbagliato concettualmente ...
Tu confronti "f", che è una costante stringa con string che è un carattere.
Così è giusto:
Codice sorgente - presumibilmente Plain Text

  1. if(string[i] == 'f')
  2. /*blablabla*/



Ok ?

Ultima modifica effettuata da mc il 13/12/2008 alle 17:41
PM Quote
Avatar
mc (Normal User)
Rookie


Messaggi: 52
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 17:45
Sabato, 13/12/2008
Testo quotato

Postato originariamente da feddur:
edit: ho trovato l'errore.. si tratta della parametro in entrata.
forse se spiego cosa vorrei fare è più facile per tutti.
Data una stringa, vorrei prendere una sottostringa compresa tra due caratteri ( e ).
come fare?
grazie



Per estrarre una stringa compresa tra ( e ); semplicemente:
- Analizzi ogni carattere.
- Se trovi ( allochi lo spazio per una sottostringa.
- Inserisci caratteri nella sottostringa, fino a quando non trovi )
- Restituisci la sottostringa.

PM Quote
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 20:32
Sabato, 13/12/2008
bene.. allora scorro con un ciclo for carattere per carattere nella stringa da cercare.
ma come faccio a confrontare: stringa[j] con "(" ?
grazie.

PM Quote
Avatar
mc (Normal User)
Rookie


Messaggi: 52
Iscritto: 04/12/2008

Segnala al moderatore
Postato alle 20:34
Sabato, 13/12/2008
Codice sorgente - presumibilmente Plain Text

  1. if(string[j] == '(')


PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 12:09
Domenica, 14/12/2008
volendo puoi mettere la condizione nel ciclo for
cosi:

for(i=0;string!='(';i++)
{
//blocco vuoto
}
par=string[i+1];

Ultima modifica effettuata da munkaka il 14/12/2008 alle 12:11
PM Quote
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 19:52
Domenica, 14/12/2008
Risolto! :D
Codice sorgente - presumibilmente Plain Text

  1. while(stringa[i ] != '\0')
  2.         {
  3.          i++;
  4.              if(stringa[i ] == '[' )
  5.               {
  6.                while(stringa[i] != ']')
  7.                {                      
  8.                i++;        
  9.                printf("%c",stringa[i ]);
  10.                }
  11.               }
  12.         }


Ultima modifica effettuata da feddur il 14/12/2008 alle 20:38
PM Quote
Avatar
feddur (Normal User)
Pro


Messaggi: 200
Iscritto: 06/03/2008

Segnala al moderatore
Postato alle 0:35
Lunedì, 15/12/2008
credevo di aver risolto.. invece no.
la funzione l'ho un po' modificata..
Codice sorgente - presumibilmente C++

  1. void color(char string[])
  2. {
  3.     int i = 0;
  4.     int k = 0;
  5.     int cont = 0;
  6.     char bus[30 ];
  7.     char vecchio[30 ];    
  8.    
  9.                while(string[i] != ')')
  10.                {                      
  11.                i++;
  12.                cont++;
  13.                bus[k ] = string[i ];        
  14.                k++;
  15.                    for(k=0; k<cont; k++)
  16.                     {
  17.                       if(string[k ] == bus[k])printf("Uguale\n");
  18.                       else printf("Diverso\n");
  19.                     }
  20.                }
  21.    
  22. }



lavorando ancora vorrei che questa funzione, applicata su stringhe sempre diverse, riuscisse a capire se i valori prima di ' )' sono uguali a quelli delle altre stringhe precedenti.
esempio:

123456)   nome
123455)   nome
123456)   nome
123456)   nome
123455)   nome

date queste stringhe una alla volta vorrei che la funzione compari tutte le cifre prima di ) e quelle uguali dovrebbe essere colorate di colore uguale.
Sono arrivato fino ad un certo punto ma non riesco ad andare avanti.. ne uscirò pazzo..
aiutatemi. grazie!

PM Quote
Avatar
munkaka (Member)
Pro


Messaggi: 119
Iscritto: 07/09/2008

Segnala al moderatore
Postato alle 18:03
Lunedì, 15/12/2008
potresti prima leggere tutte le righe del testo e metterle in un array, poi crei un'array che contiene i caratteri trovati
controlla con un ciclo ogni stringa, un carattere alla volta fino alla parentesi, e ogni carattere nuovo lo metti nell'array che contiene i caratteri, la dimensione dell'array sarà il numero di colori. Poi alla fine scorri di nuovo ogni stringa e a ogni carattere fai corrispondere un colore

Ultima modifica effettuata da munkaka il 15/12/2008 alle 18:04
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo