Buscar

07-VetoresdeCaracteres

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 10 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

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 6, do total de 10 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

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 9, do total de 10 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

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

Outros materiais