Aula 07 - Estruturas de dados homogêneas II - Vetores de caracteres
93 pág.

Aula 07 - Estruturas de dados homogêneas II - Vetores de caracteres


DisciplinaLaboratório de Programação153 materiais2.482 seguidores
Pré-visualização5 páginas
0;
enquanto ( i < tam ) faça
{
se (cadeia[i] = procurado)
{
encontrados encontrados + 1;
} 
i i + 1;
}
retorne encontrados;
}
etset
t
Variáveis:
i = 5
encontrados = 2
Falha o teste da 
estrutura de repetição
O teste será realizado 
supondo que:
cadeia = teste
tam = 5
procurado = t 
45
inteiro conta( caracter cadeia[], inteiro tam, caracter procurado )
{
inteiro encontrados, i;
i 0;
encontrados 0;
enquanto ( i < tam ) faça
{
se (cadeia[i] = procurado)
{
encontrados encontrados + 1;
} 
i i + 1;
}
retorne encontrados;
}
etset
t
Variáveis:
i = 5
encontrados = 2
Retorna o número de 
caracteres encontrados: 2
O teste será realizado 
supondo que:
cadeia = teste
tam = 5
procurado = t 
46
Exercício resolvido 2:
Busca em Strings em C
Criar uma função para verificar se a string 
s2 está contida na string s1. A função 
deverá retornar 1 se encontrar a string ou 0, 
caso contrário. 
Ex.: Se s1 fosse Ana Maria Silva e s2 fosse 
Maria , a função retornaria 1, pois s2 está 
contido em s1.
47
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
O teste será realizado 
supondo que:
s1 = Este é um teste
s2 = um 
48
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Função é chamada passando-
se s1 e s2 como parâmetro
49
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 
j = 
aux = 
tam1 = 15
tam2 = 2
Variáveis são criadas e inicializadas. 
tam1 recebe o tamanho de s1 e 
tam2 recebe o tamanho de s2.
50
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 0
j = 
aux = 
tam1 = 15
tam2 = 2
A idéia central é varrer s1
comparando com s2, caracter a 
caracter.
51
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 0
j = 0
aux = 0
tam1 = 15
tam2 = 2
Para fazer a comparação, uma 
variável auxiliar (aux) será utilizada.
52
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 0
j = 0
aux = 0
tam1 = 15
tam2 = 2
Como caracteres não são 
iguais, executa o break!
53
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 0
j = 0
aux = 0
tam1 = 15
tam2 = 2
Falha nessa condição e 
continua no loop externo
54
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 1
j = 0
aux = 0
tam1 = 15
tam2 = 2
Vai para a próxima iteração 
do loop externo!
55
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 1
j = 0
aux = 1
tam1 = 15
tam2 = 2
Busca agora começa do segundo 
caracter de s1 em relação ao 
primeiro de s2 e falha.
56
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
Falha nessa condição e 
continua no loop externo
Variáveis:
i = 1
j = 0
aux = 1
tam1 = 15
tam2 = 2
etsetmuéetsE
mu
57
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 2
j = 0
aux = 2
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
58
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 3
j = 0
aux = 3
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
59
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmué_etsE
mu
Variáveis:
i = 4
j = 0
aux = 4
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
60
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 5
j = 0
aux = 5
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
61
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmu_éetsE
mu
Variáveis:
i = 6
j = 0
aux = 6
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
62
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 7
j = 0
aux = 7
tam1 = 15
tam2 = 2
Testando os próximos 
elementos em busca de 
um válido
63
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 7
j = 0
aux = 8
tam1 = 15
tam2 = 2
Teste falha e incrementa 
variável aux.
64
int buscaString(char s1[], char s2[])
{
int i,j,aux, tam1, tam2;
tam1 = strlen(s1);
tam2 = strlen(s2);
for(i=0;i<tam1;i++)
{
aux=i;
for(j=0;j<tam2 && aux<tam1;j++) 
{
if (s2[j] != s1[aux])
break;
aux++;
}
if (j == tam2)
return 1;
}
return 0;
}
etsetmuéetsE
mu
Variáveis:
i = 7
j = 1
aux = 8