Ir ao conteúdo

Matriz - Exercício - Ajuda"


rodrigopba

Posts recomendados

Postado

Fala galera, espero que possam me ajudar.

 

 

A proposta é a seguinte:
 

Faça um algoritmo (em C)  que leia uma matriz de inteiros 10x10 e escreva ela da seguinte forma:
 
-------------...
|1 |123|3 |2|...
-------------...
|12|1  |57|9|...
-------------...
.
.
.
 
O usuário poderá digitar qualquer número inteiro válido, a escrita da matriz deverá se adequar aos números digitados para que a barra vertical "|" de cada coluna fique alinhada.
 
Dica: utilize o espaço " " para preencher o espaço em branco de cada coluna.
 
Postado

A barra "|" deve ficar alinhada corretamente, independente do tamanho do numero.

 

EX:


|22 |554 |655 |

|22 | 56  | 25  |

 

a barra não pode mudar ( ficar desalinhada )

 

vlwss

  • Membro VIP
Postado

Difícil essa.

 

Ele vai preencher todas as posições da matriz 10 x 10 inteira.

 

Você terá que ler a primeira posição de cada linha e achar o maior número. Testar quantas casas ele tem. Depois tem que varrer novamente a primeira posição de cada linha adicionando os espaços que faltam até ficarem iguais, guardando em uma matriz string. Não lembro se char guarda espaço.

 

Tem que fazer isso nas outras posições também.

 

Talvez seja isso.


:D

Postado

Ok,

Vamos pensar um pouco,

10 x 10 é de 10 linhas e 10 colunas.

Vamos considera um exemplo menor: 2 x 3

 

Quem determina o tamanho do campo e o numero de maior que tem mais casas decimais.

O C por exemplo se limita a um impressão por linha;

Assim eu teria de ter todos os tamanho de campos previamente determinado antes de imprimir os numero;

 

Veja esse simples exemplo, e bem literal, logo abaixo:

    /*Campos Formatados com printf*/    int iNumeros[2][3] = {        { 10, 100,  1},        {100,  10,  10}    };    int l_tmp = 0;    int colunas[3] = {0}; //Tamanho dos Campos    int div = 0;    int i;    for(i = 0; i < 3; i++)    {        int j;        for(j = 0, l_tmp = 0; j < 2; j++)        {            div = iNumeros[j][i];            while(div) { //Determinado o tamanho dos campos                div /= 10;                l_tmp++;            }            if(iNumeros[j][i] <= 0) l_tmp++; //Remove o bug dos negativos            if(l_tmp > colunas[i])                colunas[i] = l_tmp;            l_tmp = 0;        }    }   for(i = 0; i < 2; i++, putchar('\n'))        for( div = 0; div < 3; div++)        {            l_tmp = printf("%d", iNumeros[i][div]); //pode simplificar com flag da função printf                l_tmp = colunas[div] - l_tmp;            while(l_tmp)            {                 putchar(' ');                 l_tmp--;            } putchar('|');        }

 

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!