Visitante Postado Outubro 27, 2015 Denunciar Share Postado Outubro 27, 2015 (editado) sd Editado Outubro 28, 2015 por alexandremcf quero excluir Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Outubro 28, 2015 Denunciar Share Postado Outubro 28, 2015 A resposta esta em descobrir em uma coluna a quantidade de casas que tem um numero, por exemplo, na ultima linha desse seu exemplo:------------------|10|100| 100|------------------| 1| 1| 1|------------------| 1| 10|1000|------------------Vamos pegar a ultima coluna:----------- .....| 100| ----------- .....| 1| ----------- .....|1000| ----------- seria usar a função que pertence a tal biblioteca iomanip, que se chama setw, e fazer algo como isso:#include <iostream> // std::cout, std::endl #include <iomanip> // std::setw int main () { std::cout << '|' << std::setw(4) << 100 << '|' << std::endl; std::cout << '|' << std::setw(4) << 1 << '|' << std::endl; std::cout << '|' << 1000 << '|' << std::endl; return 0; }Que de saída gera algo como:| 100| | 1| |1000|Conclusão... setw estabelece uma "largura" que se mede em letras, std::setw(4) quer dizer que eu quer usar uma largura de 4 letras para cada numero que eu colocar std::setw(4) adiante. Essa linha:std::cout << '|' << std::setw(4) << 100 << '|' << std::endl;...é como dizer, imprime '|', depois imprime 100 como si tivesse 4 letras, evidentemente si não tem 4 letras o setw preenche com espaços, e logo depois pinte '|' novamente. O sewt somente afeta ao seguinte que vai ser impresso, si não a barra sairia 3 espaços mais adiante.Então como falei antes, descobre quantas casinhas tem o maior numero da coluna e use isso valor de parâmetro para setw. Um exemplo para saber o maior numero da coluna é:#include <iostream> // std::cout, std::endl #include <iomanip> // std::setw int main () { int num = 1000; int digitos = 1; // um digito sempre deve ter, nem que seja o zero ;) while ( (num / 10) > 0 ) { num = num / 10; digitos++; } std::cout << "num contem " << digitos << " Digitos" << std::endl; std::cout << '|' << std::setw ( digitos ) << 100 << '|' << std::endl; std::cout << '|' << std::setw ( digitos ) << 1 << '|' << std::endl; std::cout << '|' << std::setw ( digitos ) << 1000 << '|' << std::endl; return 0; } Mas o anterior não serve para seu exemplo, você quer buscar o maior valor de cada coluna, e logo usar o setw antes de imprimir um valor que esta em uma linha e não em uma coluna, sendo assim montei esse exemplo: #include <iostream> // std::cout, std::endl #include <iomanip> // std::setw using namespace std; int main (){ const int coluna = 3; const int linha = 3; //Guarde os valores da coluna aqui desde mesma forma, si vai guardar uma matriz maior nao se esqueça de mudar os atributos de linha e coluna para que funcione perfeitamente os loops. int matriz [linha][coluna]= { {10,100, 100}, {1 , 1, 1}, {1 , 10,1000} }; int maior[coluna]={0}; //buscamos o maior valor de cada coluna: for ( int i = 0; i < coluna; i++ ){ for (int z = 0; z < linha; z++){ if ( matriz[z][i] > maior[i] ){ maior[i] = matriz[z][i]; } } } //mostra o maior valor de cada coluna:(Essa parte pode ser borrada sem problemas, é somente informativa.) cout << "O maior valor que tem em cada coluna." << endl; for ( int n: maior){ cout << n << ", "; } //Agora só usar o explicado antes para imprimir, mas nao será moleza. cout << "\n" << endl; for ( int i = 0; i < linha; i++ ) { int aux = maior[i]; // Guardamos o maior valor de cada coluna em uma variavel auxiliar para reutilizar o proprio vetor para albergar a quantidade de digitos que tem o maior numero que pertence a cada coluna, faremos isso uma vez por cada coluna para saber a quantidade de digitos que tem o maior numero de cada coluna. ;) maior[i] = 1; while ( ( aux / 10 ) > 0 ) { aux = aux / 10; maior[i]++; // Como vemos, agora maior[i] ja contem a quantidade de digitos que éo que precisamos saber para poder usar setw na hora de imprimir. } } //mostra a quantidade de cifras que vai ter cada coluna, essa parte pode ser borrada sem problemas, é somente informativa. cout << "Quantidade de cifras que tem o maior valor em cada coluna." << endl; int x = 0; for ( int n: maior){ cout << setw( maior[x] ) << n; x++; } //E agora tudo certo... Só falta imprimir =) cout << endl; for ( int i = 0; i<linha; i++ ){ for( int z = 0; z < coluna; z++ ){ cout << '|' << setw(maior[z]) << matriz[i][z]; } cout << '|' << endl; } cin.ignore(); return 0; }É só mudar a matriz, e só mudar os atributos de coluna e linha para uma matriz diferente. ;)Não tenho muito tempo Assim que perdoe si não posso explicar bem, mas deixei o código mais ou menos bem comentado.Veja mais info aqui:http://www.cplusplus.com/reference/iomanip/setw/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Visitante
sd
Editado por alexandremcfquero excluir
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.