Baixe o app para aproveitar ainda mais
Prévia do material em texto
Vetores de Caracteres Resolução dos Exercícios Primeira Lista (Slide 69) 1) Fazer um programa para contar o número de espaços em brancos de uma string. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char string[50]; int i, cont; cont = 0; printf("Digite uma frase: "); gets (string); for (i=0; string[i]!='\0'; i++) { if (string[i] == ' ') { cont++; } } printf ("\nForam encontrados %d espaco(s).", cont); return 0; } 2) Refaça o programa anterior criando uma função que receberá como parâmetro a string e retornará o número de espaços em branco que a string contem. #include <stdio.h> #include <stdlib.h> #include <string.h> int espaco (char s[]) { int i, cont; cont = 0; for (i=0; s[i]!='\0'; i++) { if (s[i] == ' ') { cont++; } } return (cont); } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("\nForam encontrados %d espaco(s).", espaco(string)); return 0; } 3) Fazer um programa para contar o número de vogais numa cadeia de caractere. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s[50]; int i, cont; cont = 0; printf("Digite uma frase: "); gets (s); for (i=0; s[i]!='\0'; i++) { if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U') { cont++; } } printf ("\nForam encontrados %d vogal(ais).", cont); return 0; } 4) Refaça o programa anterior criando uma função que receberá como parâmetro a string e retornará o número de vogais que a string contem. #include <stdio.h> #include <stdlib.h> #include <string.h> int vogais (char s[]) { int i, cont; cont = 0; for (i=0; s[i]!='\0'; i++) { if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U') { cont++; } } return (cont); } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("\nForam encontrados %d vogal(ais).", vogais(string)); return 0; } 5) Escrever um programa para ler uma string (com mais de uma palavra) e faça com que a primeira letra de cada palavra fique em maiúscula. Para isso, basta subtrair 32 do elemento que deseja alterar para maiúsculo. chrNome[0] = chrNome[0] - 32; Exemplo: Entrada: lab. de linguagem de programacao Saída: Lab. De Linguagem De Programacao #include <stdio.h> #include <stdlib.h> int main() { char string[50]; int i; printf("Digite uma frase em minusculo: "); gets (string); if (string[0] != ' ') { string[0] = string[0] - 32; } for (i=1; string[i]!='\0'; i++) { if (string[i-1] == ' ' && string[i] != ' ') { string[i] = string[i] - 32; } } printf ("A frase modificada eh:\n"); puts (string); return 0; } 6)Escreva uma função que receba uma string, conte quantos caracteres desta string são iguais a 'a' e substitua os que forem iguais a 'a' por 'b'. A função deverá retornar o número de caracteres modificados. #include <stdio.h> #include <stdlib.h> #include <string.h> int modifica (char s[]) { int i, cont; cont = 0; for (i=0; s[i]!='\0'; i++) { if (s[i]=='a') { cont++; s[i] = 'b'; } } return (cont); } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("\nForam modificadas %d letras.", modifica(string)); printf ("\n\nFrase modificada:\n"); puts (string); return 0; } 7) Crie um procedimento que receba uma frase e a exiba na tela de forma soletrada, ou seja, cada letra deve ser exibida na tela separada por hífen. #include <stdio.h> #include <stdlib.h> #include <string.h> void soletra (char s[]) { int i; for (i=0; s[i]!='\0'; i++) { if (s[i+1] == '\0') { printf ("%c", s[i]); } else { printf ("%c - ", s[i]); } } } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("Forma soletrada:\n"); soletra (string); return 0; } 8) Crie um procedimento que receba uma string de no máximo 50 caracteres e inverta a ordem da string digitada; Exemplo: Entrada: Teste Saída: etseT #include <stdio.h> #include <stdlib.h> #include <string.h> void inverte (char s[]) { int i, tam; tam = strlen (s); //strlen eh uma funcao que retorna o tamanho de uma string for (i=tam-1; i >=0; i--) { printf ("%c", s[i]); } } int main() { char string[50]; printf("Digite uma frase ou palavra: "); gets (string); printf ("\nFrase ou palavra invertida:\n"); inverte (string); return 0; } 9)Fazer um programa para determinar e imprimir uma string que será a concatenação de duas outras strings lidas. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char str1[50], str2[50], conc[100]; conc[0] = '\0'; printf("Digite uma frase: "); gets (str1); printf("Digite uma frase: "); gets (str2); //strcat concatena a segunda string na primeira strcat (conc, str1); strcat (conc, str2); printf ("\nConcatenacao das duas frases:\n"); puts (conc); return 0; } Segunda Lista (Slide 88) 1) Fazer um procedimento para imprimir uma string recebida como parâmetro sem os espaços em branco. #include <stdio.h> #include <stdlib.h> #include <string.h> void semEspaco (char s[]) { int i; for (i=0; s[i]!='\0'; i++) { if (s[i] != ' ') { printf ("%c", s[i]); } } } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("\nString sem espacos:\n"); semEspaco(string); return 0; } 2) Fazer um procedimento para receber uma string do usuário (máx. 50 caracteres) e imprimir uma estatística dos caracteres digitados. Isto é, imprimir o número de vogais, consoantes e outros caracteres. #include <stdio.h> #include <stdlib.h> #include <string.h> void estatistica (char s[]) { int i, vogais, consoantes, outros; vogais = consoantes = outros = 0; for (i=0; s[i]!='\0'; i++) { if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U') { vogais++; } else { if ((s[i] >= 65 && s[i] <= 90) || (s[i] >= 97 && s[i] <= 122))//Intervalo das letras { consoantes++; } else { outros++; } } } printf ("Vogal(ais): %d\n", vogais); printf ("Consoante(s): %d\n", consoantes); printf ("Outro(s): %d", outros); } int main() { char string[50]; printf("Digite uma frase: "); gets (string); printf ("Estatistica\n"); estatistica(string); return 0; } 3) Fazer um programa para leruma string e transfira as consoantes para um vetor e as vogais para outro. Depois mostre cada um dos vetores. #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s[50], consoantes[50], vogais[50]; int i, j, k; printf("Digite uma frase ou palavra: "); gets (s); for (i=0, j=0, k=0; s[i]!='\0'; i++) { if (s[i]=='a' || s[i]=='e' || s[i]=='i' || s[i]=='o' || s[i]=='u' || s[i]=='A' || s[i]=='E' || s[i]=='I' || s[i]=='O' || s[i]=='U') { vogais[j] = s[i]; j++; } else { if ((s[i] >= 65 && s[i] <= 90) || (s[i] >= 97 && s[i] <= 122)) { consoantes[k] = s[i]; k++; } } } vogais[j] = '\0'; consoantes[k] = '\0'; printf ("Vetor Completo:\n"); puts (s); printf ("Vetor de consoantes:\n"); puts (consoantes); printf ("Vetor de vogais:\n"); puts (vogais); return 0; } 4) Faça uma função que receba uma string do usuário (máx. 20 caracteres) e um caractere qualquer. A função deverá remover todas as ocorrências do caractere da string e retornar o número de remoções. #include <stdio.h> #include <stdlib.h> #include <string.h> int removeLetra (char s[], char c) { int i, j, cont; char aux[20]; cont = 0; for (i=0, j=0; s[i]!='\0'; i++) { if (s[i] != c) { aux[j] = s[i]; j++; } else { cont++; } } aux[j] = '\0'; strcpy (s, aux); return (cont); } int main() { char string[20], caracter; printf ("Digite uma palavra ou uma frase:\n"); gets (string); printf ("Digite uma letra a ser removida:\n"); caracter = getchar (); printf ("\nForam removidas %d letras.",removeLetra (string, caracter)); printf ("\n\nFrase modificada:\n"); puts (string); return 0; } 5) Escreva uma função que receba uma cadeia de caracteres de tamanho máximo 100, e retornar 1 se esta cadeia é uma palíndrome e zero caso contrário. Uma palavra é dita ser palíndrome se a seqüência de seus caracteres da esquerda para a direita é igual a seqüência de seus caracteres da direita para a esquerda. Ex.: arara, asa. #include <stdio.h> #include <stdlib.h> #include <string.h> int palindrome (char s[]) { int i, j; i = 0; j = strlen(s) - 1; while (i <= j) { if (s[i] != s[j]) { return 0; } i++; j--; } return 1; } int main() { char string[100]; printf ("Digite uma palavra ou uma frase:\n"); gets (string); if (palindrome(string)) { printf ("\nA palavra ou frase eh uma palindrome."); } else { printf ("\nA palavra ou frase nao eh uma palindrome."); } return 0; } 6) Um dos sistemas de encriptação mais antigos é atribuído a Júlio César: se uma letra a ser encriptada é a letra de número N do alfabeto, substitua-a com a letra (N+K), onde K é um número inteiro constante (César utilizava K = 3). Dessa forma, para K = 1 a mensagem Ataque ao amanhecer se torna bubrfabpabnboifdfs . Faça um programa que receba como entrada uma mensagem e um valor de K e retorne a mensagem criptografada pelo código de César. #include <stdio.h> #include <stdlib.h> #include <string.h> //OBS.: O que esta comentado nao faz parte do exercicio. void codigoCesar (char s[], int k) { int i; for (i=0; s[i]!='\0'; i++) { s[i] = s[i] + k; } } /* void decodificar (char s[], int k) { int i; for (i=0; s[i]!='\0'; i++) { s[i] = s[i] - k; } } */ int main() { char string[50]; int num; printf ("Digite uma palavra ou uma frase:\n"); gets (string); printf ("\nDigite um numero para a criptografia: "); scanf ("%d", &num); codigoCesar (string, num); printf ("\nPalavra ou frase criptografada pelo Codigo de Cesar:\n"); puts (string); /* decodificar (string, num); printf ("\nPalavra ou frase decodificada:\n"); puts (string); */ return 0; }
Compartilhar