Tempter 0 Denunciar post Postado Agosto 16, 2005 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
nordi 1 Denunciar post Postado Agosto 16, 2005 Cara este programa e muito interassante pra o raciocinio logico, utilize um char dentro de [for], e incremente ele ai você obtera a proxima letra... * Qualquer coisa retorne. At+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Tempter 0 Denunciar post Postado Agosto 16, 2005 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
Tempter 0 Denunciar post Postado Agosto 16, 2005 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
Vergil 15 Denunciar post Postado Agosto 17, 2005 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
Tempter 0 Denunciar post Postado Agosto 17, 2005 Putz, valeu pela dica cara :) Compartilhar este post Link para o post Compartilhar em outros sites
Tempter 0 Denunciar post Postado Agosto 17, 2005 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
Tempter 0 Denunciar post Postado Agosto 17, 2005 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