Ir ao conteúdo
  • Cadastre-se
matiasalexsandro

Ponto x vírgula

Recommended Posts

em programação em C, tem a possibilidade converter no momento em que o usuário for digitar um valor em ponto flutuante, por exemplo: 

 

int pi = 3.14;

 

 

observem que o valor está com um ponto e nosso padrão de numeração é utilizado a vírgula. existe alguma biblioteca para ser feita essa permuta???

Compartilhar este post


Link para o post
Compartilhar em outros sites

@matiasalexsandro

 

Não entendo de C.. mas uma regra para todas as linguagens é:  pontos flutuantes sempre usam pontos e não virgula na entrada de dados.

 

Mas podes  converter na saída.. só não daria para calcular algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A entrada de dados vai ser assim, Ex: "10,23" e você quer converter para 10.23, é isso?
 
você pode usar a função strpbrk, assim:

#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){	char str_num[60];	float num;	char *ptr;	fgets(str_num, sizeof(str_num)+1, stdin);	ptr = strpbrk(str_num, ","); //retorna um ponteiro para a posição da string ","	if(ptr != NULL)		*ptr = '.'; 				 //faz a substituição da ',' por '.'	num = atof(str_num); 	     //converte string para float	printf("num = %f", num);	return 0;}

ou você pode fazer um simples for no lugar da função:

int len = strlen(str_num);int i;for (i = 0; i < len; i++) {	if (str_num[i] == ',') {		str_num[i] = '.';		break;	}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

A entrada de dados vai ser assim, Ex: "10,23" e você quer converter para 10.23, é isso?

 

você pode usar a função strpbrk, assim:

#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){	char str_num[60];	float num;	char *ptr;	fgets(str_num, sizeof(str_num)+1, stdin);	ptr = strpbrk(str_num, ","); //retorna um ponteiro para a posição da string ","	if(ptr != NULL)		*ptr = '.'; 				 //faz a substituição da ',' por '.'	num = atof(str_num); 	     //converte string para float	printf("num = %f", num);	return 0;}

ou você pode fazer um simples for no lugar da função:

int len = strlen(str_num);int i;for (i = 0; i < len; i++) {	if (str_num[i] == ',') {		str_num[i] = '.';		break;	}}

 

 

 

NA VERDADE SERIA O CONTRÁRIO - QUANDO O USUÁRIO DIGITAR UM VALOR, O USUÁRIO VAI DIGITAR VIRGULA PRECISO QUE O PROGRAMA VEJA ISSO E TRANSFORME PARA VIRGULA, POR EXEMPLO:

 

 

 

int altura;

printf("digite sua algura:");

scanf("%f" , &altura);

 

 

obviamente o usuario vai usar a virgula e não ponto.

 

 

 

existe alguma linguagem de programação que apenas adicione uma biblioteca e ele faça essa conversão???

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso a variável aí nesse exemplo seria do tipo float ou double, e não int...

 

E a biblioteca pra fazer isso acredito que seja a "locale.h"...

Compartilhar este post


Link para o post
Compartilhar em outros sites

 @matiasalexsandro 

 

Na programação, seja a linguagem que for,  a máquina sempre lê com o ponto. e obviamente o tipo de dado deve ser FLOAT ou DOUBLE como já falado.

 

O que você PODE fazer no seu programa é  fazer quando o usuário entrar com os dados usando a vírgula,  substituir a vírgula  por ponto para fazer o cálculo... e depois na resposta trocar novamente de ponto por virgula e mostrar em tela...

 

Você precisa entender que essa conversão não vai poder ser calculado nada..pois a máquina só entende pontos flutuantes com o ponto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×