Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Tempter

Manipular letras

Recommended Posts

Olá pessoal do fórum, boa noite,Pessoal sou iniciante em programação C e me surgiu o seguinte problema, tenho que desenvolver um código no curso que estou fazendo só que não tenho am mínima idéia de como começar.É o seguinte, preciso fazer um programa que receba do usuário uma palavra, e depois que o usuário digitar a tal palavra e apertar o ENTER será apresnetado na tela a palavra com duas letras pra frente para cada um dos caracteres. ex:Se eu digito BABA, ao apertar ENTER o programa me mostra: DCDC, pois:B + duas letras pra frente = DA + duas letras pra frente = CTive uma idéia que seria a seguinte, dar números para cada uma das letras no alfabeto e quando eu ler uma letra eu busc o o número dela, somo +2 e procuro de acordo com o valor a letra resultante. Ou até trabalharia com os códigos em ASCII, mas dai teria que procurar saber como mexer com eles.O ponto principal e de maior dúvida é:Para separar os caracteres como: B - A - B - A , é da mesma forma com que posso separar números ? com divisões e resto ? Outra, como eu vou saber quantas letras tem a palavra que a pessoa digitou ? há uma função pra isso ?Estou meio perdido eu sei, mas é assim que se aprende :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu ae Nordi, fui ver sua resposta agor ana hora do almoço, durante a parte da manhã eu brinquei um pouco e cheguei numa solução, eis a seguir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código simples e limpo.

#include <stdio.h>#include <string.h>#include <conio.h> void  main()    {    char original[100], palavra[100];    int tamanho, contador;    clrscr();    printf("Digite uma palavra: ");    scanf("%s", palavra);    strcpy (original, palavra);     tamanho = strlen(palavra);        for(contador = 0; contador < tamanho-1; contador++)    { palavra[contador] = palavra[contador] + 2; }    printf("A palavra modificada ficou: %s", palavra);    getch();    }

Código completo e com comentários

#include <stdio.h>  // Biblioteca com as funcoes PRINTF e SCANF e etc#include <conio.h>  // Biblioteca com as funcoes CLRSCR e GETCH e etc#include <string.h> // Biblioteca com as funcoes STRCPY e STRLEN e etc  void  main()    { char original[100], palavra[100];  // Declaração das Strings (Vetores de caracteres)    int tamanho, contador; // Declaração das variáveis inteiras     clrscr();  // Clear Screen: limpar a tela antes de escrever alguma coisa     printf("Digite uma palavra:\n-> ");  // Imprime na tela o pedido para digitar uma palavra    scanf("%s", palavra);  // Leitura de dados: Escaneia de acordo com o formato de dado     strcpy (original, palavra);  // Copia a string PALAVRA para a string ORIGINAL    tamanho = strlen(palavra);  // Retorna o tamanho da string PALAVRA (o terminador nulo não é contado)        for(contador = 0; contador < tamanho-1; contador++)  // Incrementa contador para modificar a String       { palavra[contador] = palavra[contador] + 2; }  // Soma duas letras a mais para cada caracter (calculo ASCII)     printf("\nA palavra original era: %s\n", original);  // Imprime nome digitado    printf("A palavra modificada ficou: %s\n\n", palavra);  // Imprime nome alterado    printf("[ENTER] Para finalizar");  // Imprime pedido de entrara para finalização     getch();  // Get a Character: Aguarda a entrada de um caracter pelo teclado     }

Bom pra quem quiser, usar e abusar do código, qualquer nova idéia eu gostaria de ficar sabendo :) Obs: vou agora tentar afzer isos com um monte de IF e FOR, sem as funções, será que é possível ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma dica. Para fazer a letura de um vetor de caracteres, você não precisa usar o comando scanf("%s",&variável);Você pode usar simplesmente gets(variável);E para dar uma pausa no fim do programa, você também pode usar o seguinte comando na última linha do seu programa: system("pause");obs.: para usar este recurso você precisa da biblioteca stdlib.h, ou seja, #include <stdlib.h>

Compartilhar este post


Link para o post
Compartilhar em outros sites

to encontrando um problema agora... quando eu pesso pra voltar (estou fazendo ao contrario agora) e coloco letra a e b... ele volta em caracteres da tabela ascii e não pra Y e Z sabe ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tai o fonte sem nenhum problema, nem pra criptografar nem para descriptografar :) Nada que alguns IFs não resolvam hehe.t+

#include <stdio.h>#include <string.h>#include <conio.h> void  main(){	char palavra[100];	int tamanho, contador;	int acao; 	clrscr();	printf("Digite uma palavra: ");	scanf("%s", palavra);	tamanho = strlen(palavra);	printf("\n\nO que voce deseja fazer ? (escolha uma opcao)\n\n");	printf("[1] Criptografar\n");	printf("[2] Descriptografar\n-> ");	scanf("%d",& acao);	if ( acao == 1 )	{		for(contador = 0; contador < tamanho; contador++)		{			if ( palavra[contador] == 'Y')			{				palavra[contador] = 'A'; 			} 			else if ( palavra[contador] == 'Z')			{				palavra[contador] = 'B';			} 			else if ( palavra[contador] == 'y')			{				palavra[contador] = 'a';			} 			else if ( palavra[contador] == 'z')			{				palavra[contador] = 'b';			}  			palavra[contador] = palavra[contador] + 2;		} 	printf("A palavra criptografada ficou: %s", palavra);	}	else if ( acao == 2 )	{		for(contador = 0; contador < tamanho; contador++)		{ 			if ( palavra[contador] == 'A')			{				palavra[contador] = 'Y';			}			else if ( palavra[contador] == 'B')			{				palavra[contador] = 'Z';			} 			else if ( palavra[contador] == 'a')			{				palavra[contador] = 'y';			} 			else if ( palavra[contador] == 'b')			{				palavra[contador] = 'z';			} 			else			{				palavra[contador] = palavra[contador] - 2;			}             	}		printf("A palavra descriptografada ficou: %s", palavra);	}getch();}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.