Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <windows.h>
  4. using namespace std;
  5.  
  6. int* NhapMang(int *n, FILE *fp)
  7. {
  8. int *a = NULL;
  9. int i;
  10. fscanf(fp, "%d", n);
  11.  
  12. a = new int[*n];
  13. for (int i = 0; i < *n; i++)
  14. fscanf(fp, "%d", &a[i]);
  15.  
  16. return a;
  17. }
  18.  
  19. void XuatMang(int *a, int n, FILE *fp)
  20. {
  21. for (int i = 0; i < n; i++)
  22. fprintf(fp, " %d", a[i]);
  23. }
  24.  
  25. int SoSanhTangDan(int x, int y)
  26. {
  27. return x < y;
  28. }
  29.  
  30. int SoSanhGiamDan(int x, int y)
  31. {
  32. return x > y;
  33. }
  34.  
  35. int SoSanhTangDanDaiSo(int x, int y)
  36. {
  37. return abs(x) < abs(y);
  38. }
  39.  
  40. int SoSanhGiamDanDaiSo(int x, int y)
  41. {
  42. return abs(x) > abs(y);
  43. }
  44.  
  45. int(*SoSanh(int kt))(int, int)
  46. {
  47. switch (kt)
  48. {
  49. case 3:
  50. return SoSanhTangDan;
  51. case 4:
  52. return SoSanhGiamDan;
  53. case 5:
  54. return SoSanhTangDanDaiSo;
  55. case 6:
  56. return SoSanhGiamDanDaiSo;
  57. }
  58. }
  59.  
  60. void XuLy(int *a, int *n, int kt)
  61. {
  62. int i, j, tmp;
  63.  
  64. for (i = 0; i < *n; i++)
  65. for (j = 0; j < *n; j++)
  66. if (SoSanh(kt)(a[i], a[j]))
  67. {
  68. tmp = a[i];
  69. a[i] = a[j];
  70. a[j] = tmp;
  71. }
  72. }
  73.  
  74. void Menu(int *kt1)
  75. {
  76. cout << "\n\n0. Quay lai menu." << endl;
  77. cout << "1. Thoat chuong trinh." << endl;
  78. cout << "2. Bang Man Hinh." << endl;
  79. cout << "3. Bang File." << endl << endl;
  80.  
  81. cout << "Nhap lua chon: ";
  82. cin >> *kt1;
  83. }
  84.  
  85.  
  86. int main()
  87. {
  88. int kt, n, kt1;
  89. int *a;
  90. FILE *fp_in;
  91. fp_in = fopen("data.txt", "r");
  92. FILE *fp_out;
  93. fp_out = fopen("output.txt", "w");
  94.  
  95. while (1)
  96. {
  97. system("cls");
  98. cout << "0. Thoat chuong trinh." << endl;
  99. cout << "1. Nhap Mang" << endl;
  100. cout << "2. Xuat Mang" << endl;
  101. cout << "3. Sap Xep Tang Dan" << endl;
  102. cout << "4. Sap Xep Giam Dan" << endl;
  103. cout << "5. Sap Xep Tang Dan Dai So" << endl;
  104. cout << "6. Sap Xep Giam Dan Dai So" << endl;
  105. cout << "Nhap lua chon: ";
  106. cin >> kt;
  107. if (kt == 0)
  108. break;
  109. else if (kt == 1)
  110. {
  111. Menu(&kt1);
  112. if (kt1 == 2)
  113. a = NhapMang(&n, stdin);
  114. else if (kt1 == 3)
  115. a = NhapMang(&n, fp_in);
  116. XuatMang(a, n, stdout);
  117. cout << "\n\n0. Quay lai menu." << endl;
  118. cout << "1. Thoat chuong trinh." << endl << endl;
  119. cout << "Nhap lua chon: ";
  120. cin >> kt1;
  121. if (kt1 == 0)
  122. continue;
  123. else if (kt1 == 1)
  124. break;
  125. }
  126.  
  127. else if (kt == 2)
  128. {
  129. Menu(&kt1);
  130. if (kt1 == 2)
  131. XuatMang(a, n, stdout);
  132. else if (kt1 == 3)
  133. XuatMang(a, n, fp_out);
  134. cout << "\n\n0. Quay lai menu." << endl;
  135. cout << "1. Thoat chuong trinh." << endl << endl;
  136. cout << "Nhap lua chon: ";
  137. cin >> kt1;
  138.  
  139. if (kt1 == 0)
  140. continue;
  141. else if (kt1 == 1)
  142. break;
  143. }
  144.  
  145. else if (kt < 0 || kt > 6)
  146. continue;
  147. XuLy(a, &n, kt);
  148. }
  149.  
  150. fclose(fp_in);
  151. fclose(fp_out);
  152.  
  153. return 0;
  154. }
  155. /*bài 2. làm chưa tốt. 1 hàm nhập mảng phải vừa có khả năng nhập từ console, vừa có khả năng nhập từ file nhưng code phải gọn, ko có chia làm nhiều hàm con, ko cần if lựa chọn con trỏ hàm*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement