Ir ao conteúdo
  • Cadastre-se

C++ Conversor de caracteres em C


Marckya
Ir à solução Resolvido por KXSY,

Posts recomendados

Pessoal estou desenvolvendo um programa que faça a conversão de algumas letras por numeros, consigo imprimir apenas o 3,6,9 pois o char não aceita imprimi 2 caracteres em um, pensei em uma logica usando a tabela ASCII, (por exemplo o numero 15 fiz a seguinte conta 50 - 36 que na tabela é 50 = 2 e 36 = #, deu certo!) so que não consigo imprimir...

 

 

 

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

char palavra [150];
char palavraConvertida [150];
int armazenaInt[150];
char converte (char letra){
    
    switch(letra){
        case 'c' :
        letra = '3';
        break;
        
        case 'f':
        letra = '6';
        break;
        
        case 'i': 
        letra = '9';
        break;
        
        case 'l': 
        letra = '\f';   //12
        break;
        
        case 'o': 
        letra = '2'-'#';   //15      do 12 pra baixo foi uma logica que pensei usando a tabela ASCII pois o char não tava aceitando imprimir 2 numeros em um caractere
        break;
        
        case 'r': 
        letra = '2'-' ';   //18
        break;
        
        case 'u': 
        letra = '='-'(';   //21
        break;
        
        case 'x': 
        letra = '<'-'$';  //24
        break;
    }
    return letra;
}
    
    char convertendo(){
        for( int i = 0; i < 50; i++){
        /*    if (converte(palavra[i]) < 'a' || converte(palavra[i]) > 'z'){
                armazenaInt[i] = converte(palavra[i]);
            }else{
            
        */
        
            palavraConvertida[i] = converte(palavra[i]);
            
        }    
    }
int main(){
    char var = '<' - '$';
    printf("Digite uma palavra para ser convertida  : ");
    gets(palavra);
    convertendo();
    printf("\nPalavra convertida para: %s ",palavraConvertida,armazenaInt);
    getch();
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, KXSY disse:

Seria assim?


#include <stdio.h>
#include <ctype.h>

#define T_VETOR 10

int main(void) 
{
  char v[T_VETOR],d;
  printf("\nDigite uma palavra:\t");
  scanf("%s",v);
  printf("\n");
  for(d=0; v[d]; d++)
    printf("%i ",toupper(v[d])-64);
  printf("\n");
  getchar();
}

 

Não, não são todos os caracteres que são transformados em inteiros, apenas alguns especifico, tem uma tabela:

c = 3

f = 6

i = 9

l = 12

o = 15

r = 18

u = 21

x = 24

daí caso alguma letra que contenha nessa tabela for digitada, automaticamente a saida vai sair algum numero. Caso o usuario digite "abcde"  a saida vai ser "ab3dc", vai sair a letra e o numero junto...

 

 

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Marckya O modo mais simples seria converter na saída.

 

exemplo

#include <stdio.h>
#include <ctype.h>

#define T_VETOR 10

int main(void) 
{
  char v[T_VETOR],d;
  printf("\nDigite uma palavra:\t");
  scanf("%s",v);
  printf("\n");
  for(d=0; v[d]; d++)
    switch(toupper(v[d]))
    {
      case 'C':
        printf("3");
      break;
      case 'F':
        printf("6");
      break;
      case 'I':
        printf("9");
      break;
      case 'L':
        printf("12");
      break;
      case 'O':
        printf("15");
      break;
      case 'R':
        printf("18");
      break;
      case 'U':
        printf("21");
      break;
      case 'X':
        printf("24");
      break;
      default:
        printf("%c",v[d]);
    }
  printf("\n");
  getchar();
}

Outra maneira seria criar um tipo especifico para armazenar letras e números.

Link para o comentário
Compartilhar em outros sites

28 minutos atrás, KXSY disse:

@Marckya O modo mais simples seria converter na saída.

 

exemplo


#include <stdio.h>
#include <ctype.h>

#define T_VETOR 10

int main(void) 
{
  char v[T_VETOR],d;
  printf("\nDigite uma palavra:\t");
  scanf("%s",v);
  printf("\n");
  for(d=0; v[d]; d++)
    switch(toupper(v[d]))
    {
      case 'C':
        printf("3");
      break;
      case 'F':
        printf("6");
      break;
      case 'I':
        printf("9");
      break;
      case 'L':
        printf("12");
      break;
      case 'O':
        printf("15");
      break;
      case 'R':
        printf("18");
      break;
      case 'U':
        printf("21");
      break;
      case 'X':
        printf("24");
      break;
      default:
        printf("%c",v[d]);
    }
  printf("\n");
  getchar();
}

Outra maneira seria criar um tipo especifico para armazenar letras e números.

Isso rodou perfeito! So precisou de um ajuste em vez de scanf usei gets assim caso o usuario digite duas palavras separadas converta todas. Muito Obrigado!!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

10 minutos atrás, Marckya disse:

Isso rodou perfeito! So precisou de um ajuste em vez de scanf usei gets assim caso o usuario digite duas palavras separadas converta todas. Muito Obrigado!!

A melhor maneira de pegar strings e dessa meneira "scanf("%20[^\n]",v);" troque o 20 pela quantidade de caracteres máximos a ser lido.

 

não é mais recomendado usar gets() pelo risco de buffer overflow, sendo recomendado usar fgets().

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...