Buscar

07-VetoresdeCaracteres

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; 
}

Continue navegando