Jump to content
Sign in to follow this  
tipereira

trocar letras por numeros

Recommended Posts

tipereira

boas, estou a tentar criar um programa :P , só pra satisfazer os meus caprichos e tb treinar um pouco :thumbsup: , certo é que estou com uma dificuldade :confused: , certamente é algo simples e eu não estou a chegar la :wallbash:, mas o que eu pretendo é fazer um programa em #C, que recebe as vogais e troca por números e virse-versa

A - 5

E -4

I - 3

O - 2

U - 1

se o utilizador introduzir por exemplo:

OUEAI

e o programa devolve:

21345

se o utilizador introduzir por exemplo:

15243

e o programa devolve:

AUEOI

acho k já me fiz entender o que pretendo :) , e vou deixar o primeiro esboço que me veio a cabeça e que me pareceu mais lógico:

char frase1[200], frase2[200];

    int i,x;

    printf ("\n Introduza o conteúdo para trocar por numeros:\n");

    scanf ("%s", frase1);

    for (i=0; i>=200;i++)

    {

    if (frase1 == "a")

        frase2 = 1;

    else

        if (frase1 == "e")

        frase2 = 2;

    else

        if (frase1 == "i")

        frase2 = 3;

    else

        if (frase1 == "o")

        frase2 = 4;

    else

        if (frase1 == "u")

        frase2 = 5;

}

      x= 0;

      for(x=0;x>=200; x++)

        printf ("%s\n", frase2);

eu se calhar deveria de utilizar um strcmp, mas quem poder ajudar, agradecia a ajuda...

THX!  :P:thumbsup: :thumbsup:

Share this post


Link to post
Share on other sites
bubulindo

Assim de repente, e tentando não ser muito simplista, porque não subtrais um número ao caracter?

Se fores a asciitable.com, consegues ver que os caracteres estão ligados a um valor especifico... em que o '0' é muito diferente de 0 e o 'a' ou 'A' não são 0 ou 1.

Então podes, para cada um dos caracteres, subtrair um dado valor para ajustar, por exemplo, o 'a' (ou 'A', o que vier primeiro) ao valor 0 e levar as coisas daí em frente. Podes criar uma função que faça essa conversão e antes de a chamares apenas tens de confirmar que o caracter é alfanumérico (isalphanum() ) ou se é só uma letra através de comparação de intervalos e só converteres as letras e deixares o resto. Podes, se quiseres, fazer também o inverso. Ou seja, passares os que são números. E tudo com somas e subtracções. :)

Tás a ver a ideia? Claro que podes fazer como estás a fazer... mas é muito feio... principalmente para cobrir todas as possibilidades de caracteres.

Outra coisa, da forma como implementaste o teu código, a instrução:

for(x=0;x>=200; x++)
        printf ("%s\n", frase2);

Vai imprimir 200 vezes uma string sem caracteres uma vez que o valor 5 equivale a caracteres de controlo. Para o que queres fazer, tens de usar algo como:

for(x=0;x>=200; x++)
        {
        printf ("%d", frase2[x]);
        printf("\n");
        }

Em vez dos if's encadeados, podes sempre usar um switch(). Já que é para treinar, fica bem. :thumbsup:


include <ai se te avio>

Mãe () {

}

Share this post


Link to post
Share on other sites
tipereira

ja estou a perceber o que tu estas a dizer...

eu vou ver se consigo fazer isso...

eu estava a utilizar os if, por faço sempre com if, e dp passo o devido para switch e faço uns menuzinho, para ter uma melhor apresentação, mas isso é o menos...

obg pela ajuda... :P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.