Ir ao conteúdo

C Formatar saída em C


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Faça um programa que leia um inteiro n (no máximo 50) e imprima uma saída da forma:

1

        2

                3

não consigo espaçar os números entre as linhas.

#include <stdio.h>

int main(){
    int n, i;
    
    scanf("%d", &n);

    for (i = 1; i <= n; i++){
        printf("%d\n", i);
    }
    return 0;
}

 

 

Postado
printf("%d\n", i);

Cada espaço antes do %d seria um espaço.

printf("%d\n", i); // sem espaco
printf(" %d\n", i); // 1 espaco
printf("  %d\n", i); // 2 espacos

printf(" "); // imprime so um espaco e nao muda de linha

Então você pode usar um outro loop antes de imprimir o número e que imprime 'i ' espaços antes do printf() do número (e que muda de linha). Simples assim.

  • Obrigado 1
Postado

Entre 

    for (i = 1; i <= n; i++)
    {
        printf("%d\n", i);
    }

E

    for (i = 0; i < n; i++)
    {
        printf("%*s%d\n", i,"", i);
    }

A diferença é bem pequena para um iniciante. E considerando a dúvida do autor, talvez fosse o caso de elaborar um pouco a explicação ao invés de colocar um asterisco e postar uma resposta sem nada explicar, como se fosse aqui uma competição de soluções.

 

Sendo assim vou acrescentar: 

 

printf() é controlada por uma string, o primeiro argumento, que em geral é uma constante e escrito dentro da função, "%d\n" por exemplo. No final do programa abaixo tem uma chamada usando uma variável como argumento, para mostrar o caso.

Alguns formatos permitem mais controle usando um asterisco para especificar a precisão ou o comprimento. Esse asterisco exige uma correspondente variável na lista de argumentos e que vai ter o valor a ser usado como comprimento ou precisão.


E foi isso que @vangodp mostrou acima. Em geral isso é uma constante, como "%4d" para imprimir um int em 4 posições.

O programa abaixo tem uns exemplos e a execução a seguir

 

EXEMPLO

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main(int argc, char** argv)
{
	const char* v = "-";
	int i = 0;

	printf("128 impresso com '%%d': '%d'\n", 128);
	printf("128 impresso com '%%4d': '%4d'\n", 128);
	printf("128 impresso com '%%04d': '%04d'\n", 128);
	printf("\"azul\"impresso com '%%s': '%s'\n", "azul");
	printf("\"azul\"impresso com '%%20s': '%20s'\n", "azul");
	printf("\"azul\"impresso com '%%-20s': '%-20s'\n", "azul");

	printf("\nUsando o '*' para controlar o comprimento\n\n");
	for (i = 1; i < 10; i += 1)
		printf("%*s e o hifen se move com o %%*s\n", i, v);
	
	printf("\nUsando o '*' para controlar a precisao\n\n");
	for (i = 5; i >= 1; i -= 1)
		printf("%5.*f\n", i,(10./3.));

	char  especificador[40];
	for (i = 1; i < 10; i += 1)
	{
		sprintf(especificador, "%%%ds e o hifen se move\n", i);
		printf(especificador, v);
	}

};	// main()

E mostra

128 impresso com '%d': '128'
128 impresso com '%4d': ' 128'
128 impresso com '%04d': '0128'
"azul"impresso com '%s': 'azul'
"azul"impresso com '%20s': '                azul'
"azul"impresso com '%-20s': 'azul                '

Usando o '*' para controlar o comprimento

- e o hifen se move com o %*s
 - e o hifen se move com o %*s
  - e o hifen se move com o %*s
   - e o hifen se move com o %*s
    - e o hifen se move com o %*s
     - e o hifen se move com o %*s
      - e o hifen se move com o %*s
       - e o hifen se move com o %*s
        - e o hifen se move com o %*s

Usando o '*' para controlar a precisao

3.33333
3.3333
3.333
 3.33
  3.3

Usando uma variavel para controlar o printf()

- e o hifen se move
 - e o hifen se move
  - e o hifen se move
   - e o hifen se move
    - e o hifen se move
     - e o hifen se move
      - e o hifen se move
       - e o hifen se move
        - e o hifen se move

     

   

  • Obrigado 1
Postado
7 horas atrás, vangodp disse:

O que sim é vdd é que n vou fazer um tutorial para cada coisinha à toa(Acho que ja falei isso antes).

 

:) entre um tutorial e acrescentar um asterisco e uma variável há um longo caminho. No meio dele podia ter um parágrafo explicando algo ou um programinha de 15 linhas. Eu só acrescentei o parágrafo e o programinha e expliquei algo que poderia ser mais útil também a outros leitores.

 

É, como disse, um forum afinal

  • Curtir 1

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!