Guest User

Untitled

a guest
Dec 9th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1. #include <stdio.h>
  2. /*Funcao calcula o mdc entre dois numeros, e retorna o mdc*/
  3. int mdc(int a, int b){
  4.  
  5. int resto, divimax;
  6. if (a>b || b!=0) {
  7. while (resto!=0) {
  8. resto = a%b;
  9. a = b;
  10. b = resto;
  11. divimax = a;
  12. }
  13. }
  14. if (b==0) {
  15. divimax=a;
  16. }
  17. if (a==0) {
  18. divimax=b;
  19. }
  20. if (a<b || a!=0) {
  21. while (resto!=0) {
  22. resto = b%a;
  23. b = a;
  24. a = resto;
  25. divimax = b;
  26. }
  27. }
  28. if (a==b) {
  29. divimax = a;
  30. }
  31. return (divimax);
  32. }
  33. /*Funcao inverte digitos, com o auxilio de um loop*/
  34. /*Divide-se o valor diversar vezes ate encontrar o inverso*/
  35. int reverterDigitos(int x){
  36.  
  37. int i, aux=0;
  38. for(i=1; i<=x; i=(i*10)){
  39. aux = aux*10;
  40. aux = aux+(x%(i*10)-x%i)/i;
  41. }
  42. return (aux);
  43.  
  44. }
  45. /*Funcao compara o mdc de dois valores com um terceiro M dado pelo usuario*/
  46. /*Retorna 1 ou 0, dependendo do caso*/
  47. int compara(int x, int y, int M){
  48.  
  49. int aux1, aux2, ret=0;
  50. int mdcx, mdcy;
  51.  
  52. aux1 = reverterDigitos(x);
  53. aux2 = reverterDigitos(y);
  54.  
  55. if(aux1>aux2) {
  56. ret=1;
  57. }
  58. if(aux1==aux2){
  59. mdcx = mdc(x,M);
  60. mdcy = mdc(y,M);
  61. if(mdcx>mdcy){
  62. ret=1;
  63. if((mdcx==mdcy)&&(x<y)){
  64. ret=1;
  65. }
  66. }
  67. }
  68.  
  69.  
  70. return (ret);
  71. }
  72. /*Funcao que escaneia os valores de n e M e ordena a sequencia de numeros*/
  73. int main () {
  74.  
  75. int n, M, j, i;
  76. int aux;
  77. int A[502];
  78. int inverter;
  79. scanf("%d %d\n", &n, &M);
  80.  
  81. for (i=0; i<n; i++) {
  82. scanf("%d", &A[i]);
  83. }
  84. for(j=n-1; j>0; j--) {
  85. /*Note que inverter serve para vermos se eh para inverter a posicao dos numeros no vetor e nao os numeros em si*/
  86. for(i=0; i<j; i++){
  87. inverter=compara(A[i], A[j], M);
  88. if(inverter==1){
  89. aux = A[i];
  90. A[i] = A[j];
  91. A[j] = aux;
  92. }
  93. }
  94. }
  95. for (j=0; j<n; j++) {
  96. printf("%d\n", A[j]);
  97. }
  98.  
  99.  
  100. return 0;
  101. }
Add Comment
Please, Sign In to add comment