In questo programma devo cercare tutte le occorrenze della stringa 2 nella stringa 1
il programma funziona con tutte le stringhe che ho provato tranne che con
"Ciao Cia Cio Ociao ciao Ocio CiCiao CieCiaCiu CiAo eeCCia"
"Cia"
In questo caso il risultato corretto sarebbe: 0 5 31 39 54
invece a me stampa 0 5 39
Non capisco perché, in questa stringa mi sembra lo stesso funzionamento di
"Sette scettici sceicchi sciocchi con la sciatica a Shanghai"
"icchi"
con la quale il programma funziona correttamente.
Non riesco a trovare l'errore!!
Vi prego aiutatemi, grazie.codice:#include <stdio.h> void main() { #define MAX_LEN 100 // Input char s1[] = "Ciao Cia Cio Ociao ciao Ocio CiCiao CieCiaCiu CiAo eeCCia"; unsigned int lungS1 = sizeof(s1) - 1; char s2[] = "Cia"; unsigned int lungS2 = sizeof(s2) - 1; // Output unsigned int posizioni[MAX_LEN]; unsigned int posizioniLen; // Blocco assembler __asm { MOV ECX, 0 MOV EAX, 0 DEC lungS1 DEC lungS2 MOV EBX, lungS1 CMP EBX, 0 JZ fine MOV posizioniLen, 0 XOR EBX, EBX XOR EDX, EDX uno : CMP ECX, lungS1 JG fine CMP EAX, lungS2 JNG restart XOR EAX, EAX restart : MOV BH, s1[ECX] CMP BH, s2[EAX] JE due JNE tre due : XOR EBX, EBX CMP EAX, 0 JNE duedue MOV posizioni[EDX * 4], ECX INC ECX INC EAX JMP uno duedue : CMP EAX, lungS2 JNE duetre INC ECX INC EDX INC posizioniLen XOR EAX, EAX JMP uno duetre : INC EAX INC ECX JMP uno tre : XOR EBX, EBX XOR EAX, EAX INC ECX JMP uno fine : } // Stampa su video { unsigned int i; for (i = 0; i < posizioniLen; i++) printf("Sottostringa in posizione=%d\n", posizioni[i]); } }

Rispondi quotando
