Buscar

Manipulação de String

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Manipulação de String 
 
1) 
Descrição 
Uma função hash é um algoritmo que mapeia dados de comprimento variável para dados de 
comprimento fixo. Os valores retornados por uma função hash são chamados valores hash, 
códigos hash, somas hash (hash sums), checksums ou simplesmente hashes. Um uso é uma 
estrutura de dados chamada de tabela hash, amplamente usada em software de computador 
para consulta de dados rápida. Funções hash aceleram consultas a tabelas ou bancos de dados 
por meio da detecção de registros duplicados em um arquivo grande. Um exemplo é encontrar 
trechos similares em sequências de DNA. Eles também são úteis em criptografia. 
Nesta tarefa, o seu programa deve receber do usuário duas strings de tamanho máximo 100, 
calcular a codificação de valor inteiro para cada uma delas e mostrar seus valores no final. 
Dica: cada dígito tem seu valor inteiro correspondente em tabela ASCII. 
 
Entrada 1: 
Steve Jobs 
Steve Job 
 
Saída 2: 
Str1: Steve Jobs - Codificaçao Hash: 949 
Str2: Steve Job - Codificaçao Hash: 834 
 
Entrada 3: 
Universidade Federal de Sao Paulo 
Quarta melhor universidade da América Latina 
 
Saída 3: 
Str1: Universidade Federal de Sao Paulo - Codificaçao Hash: 3075 
Str2: Quarta melhor universidade da América Latina - Codificaçao Hash: 3951 
 
 
 
1. #include<stdio.h> 
2. #include<string.h> 
3. void ler(char a[]); 
4. int somar(char b[], int a); 
5. void escrever(char a[], char b[], int n, int m); 
6. 
7. int main(){ 
8. int soma1,soma2; 
9. char txt1[100], txt2[100]; 
10. 
11. ler(txt1); 
12. ler(txt2); 
13. soma1 = somar(txt1, soma1); 
14. soma2 = somar(txt2, soma2); 
15. escrever(txt1, txt2, soma1, soma2); 
16. return 0; 
17. } 
18. 
19. void ler(char a[]){ 
20. gets(a); 
21. return; 
22. } 
23. int somar(char b[], int a){ 
24. int i; 
25. a=0; 
26. for(i=0;i<100;i++){ 
27. if(b[i] == '\0') break; 
28. else a+=b[i]; 
29. } 
30. return a; 
31. } 
32. void escrever(char a[], char b[], int n, int m){ 
33. printf("Str1: %s - Codificaçao Hash: %d", a, n); 
34. printf("\nStr2: %s - Codificaçao Hash: %d", b, m); 
35. return; 
36. } 
 
2) 
Descrição 
Dado uma sequencia de lançamentos de uma moeda, indicar: 
a quantidade de lançamentos 
o número de ocorrência de cara (K) 
o número de ocorrência de coroa (C) 
 
Exemplo 
Entrada: 
KCKCKCKK 
Saída: 
Numero de lancamentos: 8 
Quantidade de cara: 5 
Quantidade de coroa: 3 
1. #include<stdio.h> 
2. #include<string.h> 
3. 
4. void ler(char a[]){ 
5. gets(a); 
6. return; 
7. } 
8. void ordenar(char a[], char b[], char c[]){ 
9. int j=0,n=0; 
10. for(int i=0;i<100;i++){ 
11. if(c[i] == '\0') break; 
12. else{ 
13. if(c[i]=='K'){ 
14. a[n] = 'K'; 
15. n++; 
16. } 
17. else if(c[i]=='C'){ 
18. b[j] = 'C'; 
19. j++; 
20. } 
21. } 
22. } 
23. return; 
24. } 
25. void escrever(char a[], char b[], char c[]){ 
26. printf("Numero de lancamentos: %d\n",strlen(c)); 
27. printf("Quantidade de cara: %d\n",strlen(a)); 
28. printf("Quantidade de coroa: %d",strlen(b)); 
29. return; 
30. } 
31. int main(){ 
32. char C[100]="\0", K[100]="\0", vet[100]="\0"; 
33. ler(vet); 
34. ordenar(K,C,vet); 
35. escrever(K,C,vet); 
36. return 0; 
37. } 
 
 
3) 
Descrição 
Inverter a ordem dos seus elementos de uma string. Obs: Não pode criar um vetor para 
armazenar a string invertida, isto é, a inversão deve ocorrer na própria string. 
 
Exemplo 
Entrada: 
ABCDE 
 
Saída: 
EDCBA 
 
1. #include<stdio.h> 
2. #include<string.h> 
3. 
4. void ler(char a[]){ 
5. gets(a); 
6. return; 
7. } 
8. void strinvt(char a[]){ 
9. int i,tam, fim; 
10. char z; 
11. tam = strlen(a); 
12. fim = tam - 1; 
13. for(i=0;i < tam/2 ;i++){ 
14. z = a[fim]; 
15. a[fim] = a[i]; 
16. a[i] = z; 
17. fim--; 
18. } 
19. return; 
20. } 
21. void escrever(char a[]){ 
22. puts(a); 
23. return; 
24. } 
25. 
26. int main(){ 
27. char vec[100]="/0",z; 
28. 
29. ler(vec); 
30. strinvt(vec); 
31. escrever(vec); 
32. } 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4) 
Descrição 
Dado uma string1, contar a ocorrência de uma string2. 
 
Exemplo 
Entrada: 
AXZAAAAAZX 
AA 
 
Saída: 
Número de ocorrência: 4 
1. #include <stdio.h> 
2. #include <string.h> 
3. 
4. 
5. void ler(char a[], char b[]){ 
6. scanf("%s", a); 
7. scanf("%s", b); 
8. return; 
9. } 
10. void analisar_ocor(char a[], char b[], int *cont, int *tam, int *tam2){ 
11. int i,f=0,c=0,l=0; 
12. for(i=0; i<*tam; i++){ 
13. if(a[i]==b[0]){ 
14. for(int k=0; k<*tam2; k++){ 
15. if(a[i+k] == b[k]){ 
16. c++; 
17. } 
18. } 
19. if(c%*tam2 == 0){ 
20. f++; 
21. 
22. } 
23. else{c=0;} 
24. } 
25. } 
26. *cont = f; 
27. return; 
28. } 
29. void escrever(int cont){ 
30. printf("Número de ocorrência: %d\n ", cont); 
31. return; 
32. } 
33. 
34. int main(){ 
35. char vec[100]="\0", vec2[100]="\0"; 
36. int cont, i,tam,tam2; 
37. ler(vec, vec2); 
38. tam2 = strlen(vec2); 
39. tam = strlen(vec); 
40. analisar_ocor(vec,vec2,&cont, &tam, &tam2); 
41. escrever(cont); 
42. return 0;}

Outros materiais