Baixe o app para aproveitar ainda mais
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;}
Compartilhar