Buscar

Cadeia de caracteres

Prévia do material em texto

Questões erradas: 6, 7, 11, 13
1.1. Escreva um programa que leia uma cadeia de caracteres (string) e gera uma nova
cadeia de caracteres onde todas as letras minúsculas da cadeia original foram
trocadas por maiúsculas e vice-versa. Caracteres que não são letras (como dígitos, '.',
espaço, etc.) não devem ser trocados.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<ctype.h>
int main()
{
char frase[1000];
int tamanho,i;
printf("Digite a frase:");
gets(frase);
tamanho=strlen(frase);
for(i=0;i<tamanho;i++)
{
if(frase[i]>='a' && frase[i]<='z')
{
frase[i]=toupper(frase[i]);
}
else
{
if(frase[i]>='A' && frase[i]<='Z')
{
frase[i]=tolower(frase[i]);
}
}
}
printf("%s",frase);
return 0;
}
1.2. Um palíndromo é uma palavra que se pode ler tanto da esquerda para a direita
como da direita para a esquerda. Alguns exemplos: arara, esse, ovo, rodador,
sopapos. Escreva um programa que leia uma cadeia de caractertes (string) e indica
(imprime) se a cadeia é ou não um palíndromo.
#include <stdio.h>
#include <string.h>
int main(void)
{
char vetor[100];
int i, j, tamanho, d=0;
printf("Digite a palavra: ");
gets(vetor);
tamanho=strlen(vetor);
j=tamanho-1;
for (i=0;i<tamanho;i++)
{
if (vetor[i] != vetor[j])
{
d=1;
}
j=j-1;
}
if (d == 0)
printf("%s e PALINDROMO",vetor);
else
printf("%s nao e PALINDROMO",vetor);
return 0;
}
1.3. Escreva um programa que leia uma cadeia de caracteres (string) que represente o
nome completo de uma pessoa e imprima o mesmo nome no formato indicado nos
exemplos a seguir. Se a String recebida for “Maria de Sá Santos” o programa deve
imprimir “Santos, Maria de Sá” . Se a String recebida for “Pedro de Souza” o
programa deve imprimir “Souza, Pedro de”.
#include <stdio.h>
#include <string.h>
int main()
{
char str[30];
char nova_str[30];
char *p;
int index,i;
printf("Digite o nome: ");
gets(str);
p=strrchr(str,' ');
if (p!=NULL){
index=p-str+1;
for (i=index;i<strlen(str);i++){
nova_str[i-index]=str[i];
}
strcat(nova_str, ", ");
strncat(nova_str, str,index-1);
}
printf("\nString: %s",str);
printf("\nNova string: %s",nova_str);
return 0;
}
1.4. Escreva um programa que leia duas cadeias de caracteres (string) e verifica se
uma é anagrama de outra. Anagrama é uma palavra formada pela transposição das
letras de outra, como, por exemplo: 'capa' e 'paca'; 'roma' e 'mora'.
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <ctype.h>
int main(void)
{
char palavra1[30], palavra2[30];
int cont[256], cont2[256], i, a=0;
printf("Digite a primeira palavra..:");
gets(palavra1);
printf("Digite a segunda palavra..:");
gets(palavra2);
for (i = 0; i < 256; i++)
{
cont[i] = 0;
}
for (i = 0; i < 256; i++)
{
cont2[i] = 0;
}
for (i = 0; palavra1[i] != '\0'; i++)
{
cont[palavra1[i]]++;
}
for (i = 0; palavra2[i] != '\0'; i++)
{
cont2[palavra2[i]]++;
}
for (i = 0; i < 256; i++)
{
if (cont[i] != cont2[i])
{
a= 1;
}
}
if (a==0)
printf("\nAs palavras %s e %s sao anagramas\n", palavra1, palavra2);
else
printf("\nAs palavras %s e %s nao sao anagramas\n", palavra1, palavra2);
return 0;
}
1.5. Implemente um programa que leia uma cadeia de caracteres e um caractere. O
programa deve retirar da cadeia todas as ocorrências desse caractere. Imprimir a
nova cadeia.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char frase[999], letra,a,b,c;
int tam, i;
printf("\nDigite uma frase: ");
gets(frase);
printf("Digite a letra:");
scanf(" %c",&a);
b=a;
c=a;
b=toupper(b);
c=tolower(c);
tam = strlen(frase);
for (i=0;i<tam;i++)
{
if ((frase[i] ==a) || (frase[i]==b) || frase[i]==c)
{
frase[i] = ' ';
}
}
printf("%s",frase);
return 0;
}
1.6. Implemente um programa que leia uma cadeia de caracteres e imprima todos os
prefixos dessa cadeia.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100];
printf("Digite a frase/palavra: ");
gets(str1);
int tam = strlen(str1), i;
char str2[tam];
for(i=1; i<=tam; i++)
{
strncpy(str2,str1,i);
printf("%s\n", str2);
}
return 0;
}
1.7. Implemente um programa que leia uma cadeia de caracteres e imprima todos os
sufixos dessa cadeia.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100];
printf("Digite a frase/palavra: ");
gets(str1);
int tam = strlen(str1), i;
char str2[tam];
strrev(str1);
for(i=1; i<=tam; i++)
{
strncpy(str2,str1,i);
strrev(str2);
printf("%s\n", str2);
strrev(str2);
}
return 0;
}
1.8. Implemente um programa que leia uma cadeia de caracteres e um número inteiro
positivo “n”. O programa deve imprimir todas as sub-cadeias da cadeia original de
comprimento igual a “n”.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char str1[100];
int n;
printf("Digite a frase/palavra: ");
gets(str1);
printf("Digite um numero inteiro: ");
scanf("%d", &n);
int i, j, tam = strlen(str1);
int x = tam-n;
for (i=0; i<=x; i++)
{
for (j=0; j<n; j++)
{
printf("%c", str1[j+i]);
}
printf("\n");
}
return 0;
}
1.9. Faça um programa para validar um endereço de e-mail digitado pelo usuário. O
programa deve indicar se o email fornecido é válido ou não.
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main(void)
{
int ponto=0,antesdoPonto=0,a=0,depoisdoPonto=0,i,tamanho;
char email[50];
printf("Digite o email:\t");
gets(email);
tamanho=strlen(email);
for (i=0;i<tamanho;i++)
{
char c=email[i];
if(c == '@')
{
if (a)
break;
a = 1;
if (i < 3)
break;
}
else if (a)
{
if (ponto)
{
depoisdoPonto++;
}
else if(c == '.')
{
ponto = 1;
if (antesdoPonto < 3)
{
break;
}
}
else
{
antesdoPonto++;
}
}
}
if (i == tamanho && depoisdoPonto > 1)
{
printf("Email digitado e valido");
}
else
{
printf("Email digitado e invalido");
}
return 0;
}
1.10. Faça um programa para validar uma senha digitada pelo usuário. A senha deve
ter pelo menos uma letra maiúscula, pelo menos uma letra minúscula, pelo menos um
dígito, deve ter no mínimo 8 e no máximo 15 caracteres.
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
char senha[100];
int senha2[100];
int tamanho,minuscula=0,maiuscula=0,i,numero=0;
printf("Digite sua senha:\n\n\nMinimo de:\n1 letra maiuscula\n1 Letra minuscula\n1
digito\n");
gets(senha);
tamanho=strlen(senha);
if(tamanho<8 || tamanho>15)
{
printf("Tamanho da senha invalida.");
}
else
{
for(i=0;i<tamanho;i++)
{
senha2[i]=senha[i];
if(senha2[i]>=65 && senha2[i]<=90)
{
maiuscula++;
}
if(senha2[i]>=97 && senha2[i]<=122)
{
minuscula++;
}
if(senha2[i]>=48 && senha2[i]<=57)
{
numero++;
}
}
if((maiuscula<1 || minuscula<1) || numero<1)
{
printf("Senha invalida");
}
else printf("Senha valida");
}
return 0;
}
1.11. Implemente um programa que leia uma data (cadeia de caracteres) no formato
dd/dd/dddd e indica se o texto lido é uma data válida ou não. São aceitas datas tanto
no formato brasileiro quanto no formato americano. Se a data lida for válida, indicar
se ela está no formato brasileiro ou no formato americano.
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
int main()
{
char str1[11], str2[3], str3[3], str4[5];
printf("Digite a a data no formato xx/xx/xxxx: ");
gets(str1);
int i = 0, br=0, ambas=0, eua=0;
for (i=0;i<2;i++)
{
str2[i]=str1[i];
str3[i]=str1[i+3];
str4[i]=str1[i+6];
str4[i+2]=str1[i+8];
}
int numero_1 = atoi(str2);
int numero_2 = atoi(str3);
int numero_3 = atoi(str4);
if (numero_3>0 && numero_3<=9999)
{
if (numero_1>0 && numero_1<=31)
{
if (numero_1 <= 12)
{
eua++;
br++;
}
else
br++;
}
if (numero_2>0 && numero_2<=31)
{
if (numero_2 <= 12)
{
eua++;
br++;
}
else
eua++;
}
if (eua > br)
printf("Data no formato americano");
if (br > eua)
printf("Data no formato brasileiro");
if (br == eua)
printf("Data valida para ambos os formatos");
}
else
printf("Data invalida");
return 0;
}
1.12. Implemente um programa que leia um ano, no formato dddd, e imprime o ano
por extendo.
#include<stdio.h>
#include<string.h>int cont=0,b;
char valor[20],imprimir[200];
void umd(){
switch(valor[b]){
case '1':if(cont>=2)strcat(imprimir," e");strcat(imprimir," um ");break;//verifica
caso dgito seja um
case '2':if(cont>=2)strcat(imprimir," e");strcat(imprimir," dois ");break;
case '3':if(cont>=2)strcat(imprimir," e");strcat(imprimir," tres ");break;
case '4':if(cont>=2)strcat(imprimir,"e");strcat(imprimir," quatro ");break;
case '5':if(cont>=2)strcat(imprimir," e");strcat(imprimir," cinco ");break;
case '6':if(cont>=2)strcat(imprimir," e");strcat(imprimir," seis ");break;
case '7':if(cont>=2)strcat(imprimir," e");strcat(imprimir," sete ");break;
case '8':if(cont>=2)strcat(imprimir," e");strcat(imprimir," oito ");break;
case '9':if(cont>=2)strcat(imprimir," e");strcat(imprimir," nove ");break;
}
}
void doisd(){
if(valor[b]=='1'){
switch(valor[b-1]){
case '0':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dez ");break;
case '1':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," onze
");break;//verifica caso dgito seja um
case '2':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," doze ");break;
case '3':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," treze ");break;
case '4':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quatorze ");break;
case '5':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quinze ");break;
case '6':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezesseis
");break;
case '7':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezessete
");break;
case '8':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezoito ");break;
case '9':b--;if(cont>=3)strcat(imprimir,"e");strcat(imprimir," dezenove
");break;
}
}
else{
switch(valor[b]){//se for zero nao faz nada
case '2':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," vinte
");break;//verifica caso dgito seja um
case '3':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," trinta ");break;
case '4':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," quarenta ");break;
case '5':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," cinquenta ");break;
case '6':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," sessenta ");break;
case '7':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," setenta ");break;
case '8':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," oitenta ");break;
case '9':if(cont>=3)strcat(imprimir,"e");strcat(imprimir," noventa ");break;
}
}
}
void tresd(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(valor[b-1]=='0'&&valor[b-2]=='0')strcat(imprimir," cem "); else
strcat(imprimir," cento ");break;//verifica caso dgito seja um
case '2':strcat(imprimir," duzentos ");break;
case '3':strcat(imprimir," trezentos ");break;
case '4':strcat(imprimir," quatrocentos ");break;
case '5':strcat(imprimir," quinhentos ");break;
case '6':strcat(imprimir," seiscentos ");break;
case '7':strcat(imprimir," setecentos ");break;
case '8':strcat(imprimir," oitocentos ");break;
case '9':strcat(imprimir," novecentos ");break;
}
}
void quatrod(){
switch(valor[b]){//se for zero nao faz nada
case '1':if(cont>=5)strcat(imprimir," e");strcat(imprimir," um mil
");break;//verifica caso dgito seja um
case '2':if(cont>=5)strcat(imprimir," e");strcat(imprimir," dois mil ");break;
case '3':if(cont>=5)strcat(imprimir," e");strcat(imprimir," tres mil ");break;
case '4':if(cont>=5)strcat(imprimir," e");strcat(imprimir," quatro mil ");break;
case '5':if(cont>=5)strcat(imprimir," e");strcat(imprimir," cinco mil ");break;
case '6':if(cont>=5)strcat(imprimir," e");strcat(imprimir," seis mil ");break;
case '7':if(cont>=5)strcat(imprimir," e");strcat(imprimir," sete mil ");break;
case '8':if(cont>=5)strcat(imprimir," e");strcat(imprimir," oito mil ");break;
case '9':if(cont>=5)strcat(imprimir," e");strcat(imprimir," nove mil ");break;
}
}
void inverter(char dados[20]){//funcao inverter string
char auxc;
int ac,bc,contc;
contc=strlen(dados);
bc=contc;
for (ac=0;ac<contc/2;ac++){
bc--;
auxc=valor[ac];
valor[ac]=valor[bc];
valor[bc]=auxc;
}
}
void tamanhochar(){
printf("Digite a data no formato dddd:");
scanf("%s", &valor);
cont=strlen(valor);
inverter(valor);
if(valor[0]=='0'&&cont<=1){
strcat(imprimir,"Zero");
}
}
int main(){
tamanhochar();
int a;
for(b=cont;b>=0;b--){
switch (b){
case 0:umd();break;//verifica qual casa decimal esta a correr //;
case 1:doisd();break;
case 2:tresd();break;
case 3:quatrod();break;
}
}
printf("\n\n\%s\n\n", imprimir);
return 0;
}
1.13. CAPTCHA é um acrônimo da expressão "Completely Automated Public Turing
test to tell Computers and Humans Apart" (teste de Turing público completamente
automatizado para diferenciação entre computadores e humanos): um teste de
desafio cognitivo, utilizado como ferramenta anti-spam, desenvolvido de forma
pioneira na universidade de Carnegie-Mellon. Um CAPTCHA usual envolve um que
pede que um usuário termine um teste. Como os computadores são incapazes de
resolver o CAPTCHA, todo usuário que incorpora uma solução correta é
presumidamente humano. O termo foi inventado em 2000 por Luis von Ahn, por
Manuel Blum, Nicholas J. Hopper (todos da universidade do Carnegie-Mellon), e por
John Langford (da IBM). Um tipo comum de CAPTCHA requer que o usuário
identifique as letras de uma imagem distorcida, às vezes com a adição de uma
sequência obscurecida das letras ou dos dígitos que apareça na tela. Implemente um
programa que gere aleatoriamente um CAPTCHA de seis caracteres, o qual
obrigatoriamente deve conter: letras maiúsculas, letras minúscula e dígitos. O
programa deve exibir o CAPTCHA gerado e solicitar que o usuário digite o valor
exibido. Em seguida, o programa deve ler o texto digitado pelo usuário e verificar se
este corresponde ao CAPTCHA gerado. Observe que, durante esta comparação, não
se faz diferença entre letras maiúsculas ou minúsculas. O programa deve imprimir
uma mensagem dizendo se o usuário passou ou não do teste.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<time.h>
int main(void)
{
int i,b=0;
int chave;
char captcha[6],a,letra;
printf("Gerando 6 valores aleatorios:\n\n");
srand(time(NULL));
for (i = 0; i < 6; i++)
{
chave = rand() % 25;
if (i <= 1)
{
captcha[i] = chave+65;
}
else
{
if (i <=3)
{
captcha[i] = chave+97;
}
else
{
chave = rand() % 9;
captcha[i] = chave+48;
}
}
printf("%c ",captcha[i]);
}
for(i=0;i<6;i++)
{
printf("Digite ...:");
scanf(" %c",&a);
if(a!=captcha[i])
{
b=1;
}
}
if(b!=0)
{
printf("Senha invalida");
}
else printf("Senha valida");
return 0;
}

Continue navegando