fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int alocaMatriz(int ***matriz, int lin, int col) //agora com ponteiro para int**
  5. {
  6. int i;
  7.  
  8. *matriz=malloc(lin*sizeof(int*)); //com * alterar o valor apontado
  9.  
  10. for(i=0; i<col; i++)
  11. {
  12. (*matriz)[i]=(int*)malloc(col*sizeof(int)); //aqui também
  13. }
  14. return 0;
  15. }
  16.  
  17. void leMatriz(int **matriz, int lin, int col)
  18. {
  19. int i, j;
  20.  
  21. printf("\nDigite os valores: ");
  22.  
  23. for(i=0; i<lin; i++)
  24. {
  25. for(j=0; j<col; j++)
  26. {
  27. scanf("%d", &matriz[i][j]);
  28. }
  29. }
  30. }
  31.  
  32. void mostraMatriz(int **matriz, int lin, int col)
  33. {
  34. int i, j;
  35.  
  36. for(i=0; i<lin; i++)
  37. {
  38. for(j=0; j<col; j++)
  39. {
  40. printf("%d", matriz[i][j]);
  41. }
  42. printf("\n");
  43. }
  44. }
  45.  
  46. int ordenaMatriz(int **matriz, int lin, int col)
  47. {
  48.  
  49. int i, j, menor, cont=0, indice;
  50. int vetor[lin*col];
  51.  
  52. for(i=0;i<lin;i++){
  53. for(j=0;j<col;j++){
  54. vetor[cont]=matriz[i][j];
  55. cont++;
  56. }
  57. }
  58.  
  59. for(i=0;i<(lin*col);i++){
  60. printf("%d ", vetor[i]);
  61. }
  62. for(i=0;i<lin*col;i++){
  63. menor=vetor[i];
  64. for(j=0;j<lin*col;j++){
  65. if(vetor[j]<menor){
  66. menor=vetor[j];
  67. int aux = vetor[i];
  68. vetor[i] = menor;
  69. vetor[j] = aux;
  70. }
  71. }
  72. }
  73. for(i=0, cont = 0;i<lin;i++){
  74. for(j=0;j<col;j++){
  75. matriz[i][j]=vetor[cont];
  76. cont++;
  77. }
  78. }
  79.  
  80. }
  81.  
  82. int main(int argc, char** argv)
  83. {
  84. int lin, col, i;
  85. int **matriz;
  86.  
  87. printf("Digite as dimensoes da matriz: ");
  88. scanf("%d %d", &lin, &col);
  89.  
  90. alocaMatriz(&matriz, lin, col);
  91. leMatriz(matriz, lin, col);
  92. mostraMatriz(matriz, lin, col);
  93. ordenaMatriz(matriz, lin, col);
  94. printf("\n\nMatriz ordenada:\n\n");
  95. mostraMatriz(matriz, lin, col);
  96. //desalocaMatriz(&*matriz, lin, col);
  97.  
  98. return 0;
  99. }
  100.  
Success #stdin #stdout 0s 10320KB
stdin
2 3
1
9
2
8
3
7
stdout
Digite as dimensoes da matriz: 
Digite os valores: 192
837
1 9 2 8 3 7 

Matriz ordenada:

987
321