01/08/17 22:37
drawtine
Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie
#include <stdio.h> #define MAXCAR 128 char *elimina(char str1[], char str2[]); main() { char str1[MAXCAR], str2[MAXCAR]; printf("Dammi la stringa str1: "); scanf("%s", str1); printf("Dammi la stringa str2: "); scanf("%s", str2); printf("str1-str2= %s\n", elimina(str1,str2)); } char *elimina(char str1[], char str2[]) { int i, j, k; for(i=j=0;str1[i]!='Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:#include <stdio.h> #define MAXCAR 128 char *elimina(char str1[], char str2[]); main() { char str1[MAXCAR], str2[MAXCAR]; printf("Dammi la stringa str1: "); scanf("%s", str1); printf("Dammi la stringa str2: "); scanf("%s", str2); printf("str1-str2= %s\n", elimina(str1,str2)); } char *elimina(char str1[], char str2[]) { int i, j, k; for(i=j=0;str1[i]!='{parsed_message}';i++) { for(k=0;(str2[k]!= '{parsed_message}') && (str1[i]!=str2[k]);k++); if(str2[k]== '{parsed_message}') str1[j++]=str1[i]; } str1[j]='{parsed_message}'; return str1; }
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie';i++) { for(k=0;(str2[k]!= 'Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:#include <stdio.h> #define MAXCAR 128 char *elimina(char str1[], char str2[]); main() { char str1[MAXCAR], str2[MAXCAR]; printf("Dammi la stringa str1: "); scanf("%s", str1); printf("Dammi la stringa str2: "); scanf("%s", str2); printf("str1-str2= %s\n", elimina(str1,str2)); } char *elimina(char str1[], char str2[]) { int i, j, k; for(i=j=0;str1[i]!='{parsed_message}';i++) { for(k=0;(str2[k]!= '{parsed_message}') && (str1[i]!=str2[k]);k++); if(str2[k]== '{parsed_message}') str1[j++]=str1[i]; } str1[j]='{parsed_message}'; return str1; }
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie') && (str1[i]!=str2[k]);k++); if(str2[k]== 'Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:#include <stdio.h> #define MAXCAR 128 char *elimina(char str1[], char str2[]); main() { char str1[MAXCAR], str2[MAXCAR]; printf("Dammi la stringa str1: "); scanf("%s", str1); printf("Dammi la stringa str2: "); scanf("%s", str2); printf("str1-str2= %s\n", elimina(str1,str2)); } char *elimina(char str1[], char str2[]) { int i, j, k; for(i=j=0;str1[i]!='{parsed_message}';i++) { for(k=0;(str2[k]!= '{parsed_message}') && (str1[i]!=str2[k]);k++); if(str2[k]== '{parsed_message}') str1[j++]=str1[i]; } str1[j]='{parsed_message}'; return str1; }
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie') str1[j++]=str1[i]; } str1[j]='Salve a tutti, come un utente del forum mi ha consigliato, sto seguendo i lucidi di un docente di Informatica del Politecnico di Torino. Io sono arrivato all'argomento stringhe, ma qui ho trovato un esempio, che non riesco davvero a capire. Il programma prenderebbe in input due strighe (la prima per esempio 'Olimpo', la seconda 'Oio', e dovrebbe stampare 'lmp', eliminando cioè dalla prima stringa i caratteri della seconda). Ecco il codice da lui proposto:#include <stdio.h> #define MAXCAR 128 char *elimina(char str1[], char str2[]); main() { char str1[MAXCAR], str2[MAXCAR]; printf("Dammi la stringa str1: "); scanf("%s", str1); printf("Dammi la stringa str2: "); scanf("%s", str2); printf("str1-str2= %s\n", elimina(str1,str2)); } char *elimina(char str1[], char str2[]) { int i, j, k; for(i=j=0;str1[i]!='{parsed_message}';i++) { for(k=0;(str2[k]!= '{parsed_message}') && (str1[i]!=str2[k]);k++); if(str2[k]== '{parsed_message}') str1[j++]=str1[i]; } str1[j]='{parsed_message}'; return str1; }
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie'; return str1; }
Quello che non capisco è nel secondo for, nelle condizioni: la prima controlla che la stringa non sia finita, ma è la seconda che non capisco.
Da quel che ho capito io, con l'operatore && basterebbe che una delle due condizioni sia falsa per non entrare nel ciclo, ma se le lettere sono uguali, non dovrebbe essere falsa la seconda condizione?
Grazie
aaa