Jump to content

ALINHAR NUMEROS A DIREITA


saskia

Recommended Posts

quero que escrevendo os numeros eles fiquem alinhados a direita, tipo:

custos com o pessoal 4535

caixa                              55

ou seja os numeros no momemento em que estamos a introduzir vao aparecendo alinhados a direita ou seja vao sendo inscritos da direita para a esquerda como se fosse uma maquina de calcular.

PS:

.... nao sei mesmo como fazer.!!

😞

cumprimentos,

Link to comment
Share on other sites

claro que sim... :|

Imaginemos que queres que as tuas linhas ocupem 20 espaços, no máximo:

printf("%20d", var_int);

Mais simples não pode... Se quiseres reservar os mesmos 20 espaços mas alinhar à esquerda, fazes

printf("%-20d", var_int);

Se, em vez de espaços, quiseres que preencha com zeros:

printf("%020d", var_int);

etc............... Dá bastante jeito saber trabalhar com printf, porque dá para fazer mesmo muita coisa sem ter de inventar soluções exaustivas....

Link to comment
Share on other sites

Consegui (em Windows), mas é um bocado elaborado e não queria dar aqui a solução de caras...

Vou dar já uma função para posicionar o cursor nas coordenadas dadas:

#include <windows.h>

void gotoxy(int x, int y) {
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
static COORD position;
position.X = x;
position.Y = y;
SetConsoleCursorPosition(console, position);
}

Eu sei que isto é optimizável, basta que console seja estática, e que seja apenas inicializada uma vez.

Agora é uma questão de utilizar a função _getch para ler um caracter de cada vez, verificar se está entre '0' e '9' e se o número não é já demasiado comprido, e se tudo estiver bem adicionar o caracter lido a um array.

Se for a tecla backspace, eliminar o último caracter lido trocando-o pelo valor 0 (não pelo caracter '0', mas mesmo pelo valor).

Após qualquer um dos casos anteriores, posicionar o cursor no início do espaço reservado ao número, escrever um número de espaços adequado, e escrever a string onde está o número.

Se for um enter, sair do ciclo e utilizar a função atoi para transformar o array num inteiro.

Desaparecido.

Link to comment
Share on other sites

Sera algo tipo isto:

int le_n(int linha, int coluna){

int i=0, n;
char c[10];
do{
	c[i]=getch();
	c[i+1]='\0';
	if (isdigit(c[i]))
	{
		for(int j=0; (c[j] != '\0') ;j++){
			go2xy(linha,coluna-i);
			printf("%c",c[j]);

		}
	i++;	

	}
	if(i==8)
		break;
}while(c[i]!=13 );
n=atoi (c);
return (n);
}

mas esta com o seguinte problema se  digitar 10 ele escreve 01 .... mas já escreve da direita para a esquerda!!

cumprimentos,

bushin

Link to comment
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
×
×
  • 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.