domingo, 9 de dezembro de 2012

Faça um algoritmo em C que converta uma string em MAIÚSCULAS usando código ASCII e vetor.

Isto seria um programa simples de se fazer. Bastaria usar algumas das funções já existentes na linguagem C/C++. Mas, porém, contudo, os professores exigem dos alunos é que eles usem vetor e a tabela ASCII. E nem todos sabem como fazer. Então, supro esta sua necessidade. Como é que faz? Eis abaixo em partes.

Parte 1: Pegando a String.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
char palavra[20];
int tam,i;

printf("Digite uma palavra: ");
scanf("%s",&palavra);

printf("\nA palavra digitada foi: %s ",palavra);
printf("\n\n");

printf("\n\n");
system("pause");

}

 

O código acima é suficiente para coletar do usuário uma palavra. E sem espaço. Se você usar espaço o programa vai desconsiderar depois do ‘\0’. Se rodar o código acima ele vai apenas receber uma palavra e depois exibir na tela.


Depois de você ler as informações você vai ter que fazer a conversão. Para tal, o código abaixo deve ser inserido no código acima.


tam = strlen(palavra);

for (i=0;i < tam;i++)
{
palavra[i] = palavra[i]-32;
}

 

Você pode usar assim, como acima que funciona. A variavel “tam” através da função strlen() recebe o valor inteiro da quantidade de letras digitada. Você pode economizar escrevendo o código assim:


for (i=0;i < strlen(tam);i++)
{
palavra[i] = palavra[i]-32;
}

 


O que é que muda? A variavel “tam” é usada dentro do laço e vai ter a mesma ação, que é, pegar o tamanho em inteiro da quantidade de letras digitadas na palavra[i]. É esta a função de strlen(tam). Str=string e len=lenght. Tamanho da String. Usando desta maneira, você economiza a linha de atribuição: tam = strlen(palavra);


O código: palavra[i] = palavra[i]-32 é quem converte a sua palavra em minúsculo para MAIÚSCULA. Mas, como é que funciona? Simples: na tabela ASCII toda e qualquer letra minúscula, menos 32, vai para a mesma letra em maiúscula. Não acredita? Faz o teste: abra o Bloco de Notas e segure a tecla ALT da esquerda e então digite no teclado Numérico o número 97. Vai sair a letra ‘a’ em minúsculo. 97-32=65 não é? Então! Faça a mesma coisa. Segure ALT da esquerda e aperte no teclado númerico 65 e você vai ter uma letra A, em maiúscula.


Então é por isto que o código  palavra[i] = palavra[i]-32 vai converter a palavra minúsculo para maiúscula. Não esquecer do que muito se repete: toda cadeia de string é na verdade um vetor. O código completo fica assim:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
char palavra[20];
int tam,i;

printf("Digite uma palavra: ");
scanf("%s",&palavra);

printf("\nA palavra digitada foi: %s ",palavra);
printf("\n\n");



for (i=0;i < strlen(tam);i++)
{
palavra[i] = palavra[i]-32;
}

printf("A palavra em maiusculas %s " ,palavra);
printf("\n\n");
system("pause");

}