Ir para conteúdo
Fórum Script Brasil
  • 0

Alterar numero para caracter


aninhasilvac

Pergunta

Olá, tudo bem?

Sou a Ana fiz um código para um trabalho da facul, tinha que criar uma lista simplesmente encadeada, e criar uma função onde inverteria os dados digitados pelo usuario. Só que fiz isso com numeros inteiros, e precisava ser como caracteres, eu altero para char o tipo de dado mas o que entra são números inteiro. 

Código:

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

struct lista {
    int info;
    struct lista* prox;
};

typedef struct lista Lista;

Lista* lst_cria (void)
{
    return NULL;
}

Lista* lst_insere (Lista* l, int i)
{
    Lista* novo = (Lista*) malloc(sizeof(Lista));
    novo -> info = i;
    novo -> prox = l;
    return novo;
}

void lst_imprime (Lista* l)
{
     do {
        printf("%d\t",l->info);
        l = l->prox;
     } while (l != NULL);
}

Lista *lst_inverte( Lista *l) 
{     
           Lista *nova = lst_cria();
        Lista *p;
       
        for ( p = l; p; p = p->prox )
                nova = lst_insere(nova, p->info);
        return nova;     
}

int main (void)
{
    setlocale(LC_ALL, "Portuguese");
    
    char R;
    int i;
    Lista* l;
    l = lst_cria();
    

    do{
        printf("\n\nInforme o dado a ser inserido:");
        scanf("%d",&i);
        
        l = lst_insere(l,i);
        
        lst_imprime(l);
        
        printf("\n\nQual o dado que você deseja inserir?\n\n");
        printf("Digite: N para NÃO ; S para SIM \n\n");
        fflush(stdin);
        scanf("%c",&R);
        
    }while(R=='S'||R =='s');    
    
    if (R=='N'||R=='n')
    {
        printf ("Invertendo...\n\n");
            
        Lista *invertida = lst_inverte(l);
           printf("\nLista Invertida!:\n");
   
           lst_imprime(invertida);
    }
    
    system("pause");
    return 0;
}

 

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
struct lista {
    int info; //char
    struct lista* prox;
};

Primeiro, info tem de ser um char

void lst_imprime (Lista* l)
{
     do {
        printf("%d\t",l->info); //%c
        l = l->prox;
     } while (l != NULL);
}

no printf, não pode estar %d, se não vai-te dizer o valor em forma de numero inteiro

char R;
int i; //char
Lista* l;
l = lst_cria();

Na função main, i também têm de ser tipo char

 scanf("%d",&i); //%c

Aqui também têm de estar dentro da função scanf %c

Lista* lst_insere (Lista* l, int i) //char i
{
    Lista* novo = (Lista*) malloc(sizeof(Lista));
    novo -> info = i;
    novo -> prox = l;
    return novo;
}

E... nesta função passas o argumento 'i' como char

Continua a não dar?

Editado por CyberGate
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...