Buscar

strings solucao ex3

Prévia do material em texto

Algoritmo PalavrasIguais_1 
/* Declaração de variáveis otimida */ 
Início 
 Leia(fr1, fr2) 
 i ç 0 
 Enquanto i < tamanho (fr1) faca 
 jç0 
 Enquanto ( fr1 [ i ] != ‘ ’ ) E ( i < tamanho (fr1) ) faca 
 palavra[j] ç fr1[ i ]; 
 i ++ 
 j++ 
 fim_enquanto 
 palavra[j]ç‘\0’ 
 kç0 
 achouç0 
 enquanto (k < tamanho(fr2) E (achou=0)) faca 
 lç0 
 enquanto ( fr2 [ k ] != ‘ ’ ) E ( k < tamanho(fr2) ) faca 
 p_aux[l] çfr2 [ k ] 
 k++ 
 l++ 
 fim_enquanto 
 p_aux [l] ç‘\0’ 
 /* Fazer o teste se palavra = p_aux, mostrar palavra, e achou recebe 1. 
 Veja estre trecho na próxima página. */ 
 k++ 
 fim_enquanto 
 i++ 
 fim_enquanto 
Fim. 
SOLUÇÃO EX. 3 SLIDES SOBRE STRINGS 
(varrendo os dois vetores) 
/* Encontra uma palavra em 
fr1 e armazena na string 
“palavra” */ 
/* Encontra uma palavra em 
fr2 e armazena na string 
“p_aux” */ 
 
 
 
 
 
 
 
Se (j=l) então 
 m ç 0 
 Enquanto (palavra [m] = p_aux[m]) E (m < j) faca 
 m++ 
 Fim_enquanto 
 Se (m=j) então 
 achouç1 
 Escreva (palavra) 
 Fim_se 
Fim_se 
 
SOLUÇÃO EX. 3 SLIDES SOBRE STRINGS 
(varrendo os dois vetores) 
/* testa se palavra é igual a 
p_aux */ 
 
 
 
 
Algoritmo PalavrasIguais_2 
/* Declaração de variáveis omitida */ 
Início 
 Leia(fr1, fr2) 
 x ç 0 
 i ç 0 
 Enquanto ( fr2 [ i ] != NULL ) faça 
 conta_pal ç 0 
 Enquanto ( fr2 [ i ] ! = ‘ ’) E ( fr2 [ i ] != NULL ) faça 
 i++ 
 conta_pal++ 
 Fim_Enquanto 
 TAM_fr2 [ x ]çconta_pal 
 x++ /* x vai guardar o número de palavras na string fr2 */ 
 i++ 
 Fim_Enquanto 
 
 
 /* o algoritmo continua no próximo slide */ 
 
SOLUÇÃO OTIMIZADA DO EX. 3 DOS SLIDES SOBRE STRINGS UTILIZANDO 
VETOR AUXILIAR PARA GUARDAR O TAMANHO DAS PALAVRAS DE fr2 
/* Conta o tamanho de cada 
palavra em fr2 e armazena 
no vetor de inteiros 
TAM_fr2*/ 
 i ç 0 
 Enquanto i < tamanho (fr1) faca 
 jç0 
 Enquanto ( fr1 [ i ] != ‘ ’ ) E ( i < tamanho (fr1) ) faca 
 palavra[j] ç fr1[ i ]; 
 i ++ 
 j++ 
 fim_enquanto 
 palavra[j]ç‘\0’ 
 tam_palavraç strlen(palavra) 
 kç0 
 achouç0 
 enquanto ((k < x ) E (achou==0)) faca 
 Se (TAM_fr2[ k ] == tam_palavra) então 
 indice ç 0 
 Para n ç 0 até k-1 faça 
 indice ç indice + TAM_fr2[ n ] + 1 
 Fim_Para 
 m ç 0 
 Enquanto ((palavra [m] = fr2[indice]) E (m < tam_palavra )) faca 
 m++ 
 indice++ 
 Fim_enquanto 
 Se (m=tam_palavra) então 
 achouç1 
 Escreva (palavra) 
 Fim_se 
 Fim_Se 
 k++ 
 fim_enquanto 
 i++ 
 fim_enquanto 
Fim. 
/* Encontra uma palavra em 
fr1 e armazena na string 
“palavra” */ 
/* encontra o índice em 
fr2 onde começa a palavra 
a ser testada */ 
/* testa a string “palavra” 
com a palavra de fr2 que 
tem o mesmo tamanho*/

Continue navegando