Advertisement
fanadewi

Untitled

Dec 5th, 2014
435
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.96 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. typedef struct{
  6. char nama[30],nim[10],nilai[3];
  7. }mahasiswa;
  8. /*
  9. 2
  10. 1
  11. Fitri Ana Dewi
  12. 1307639
  13. 99
  14. Tia Ayu Magfiroh
  15. 1307680
  16. 88
  17. Sayyidah Nurul Hayati
  18. 1300551
  19. 89
  20. */
  21. mahasiswa mhsa[10];
  22. mahasiswa mhsb[10];
  23. mahasiswa mhsc[20];
  24. mahasiswa temp;
  25.  
  26. int na,nb,nc,ka,kb,kc,i,j,k,menu,submenu,imin,nim[20],ketemu,tempnim;
  27.  
  28. void gabung(){
  29. while(ka<na){
  30. mhsc[kc]=mhsa[ka];
  31. nim[kc]=atoi(mhsa[ka].nim);
  32. kc++;
  33. ka++;
  34. }
  35. while(kb<nb){
  36. mhsc[kc]=mhsb[kb];
  37. nim[kc]=atoi(mhsb[kb].nim);
  38. kc++;
  39. kb++;
  40. }
  41.  
  42. for(i=0;i<nc-1;i++){
  43. imin=i;
  44. for(j=i+1;j<nc;j++){
  45. if(strcmp(mhsc[imin].nim,mhsc[j].nim)>0){
  46. imin=j;
  47. }
  48. }
  49. tempnim=nim[imin];
  50. nim[imin]=nim[i];
  51. nim[i]=tempnim;
  52.  
  53. temp=mhsc[imin];
  54. mhsc[imin]=mhsc[i];
  55. mhsc[i]=temp;
  56. }
  57. }
  58.  
  59. void quick(int kiri,int kanan){
  60. int i,j,tengah;
  61. i=kiri;
  62. j=kanan;
  63. tengah=nim[(kiri+kanan)/2];
  64. temp=mhsc[(kiri+kanan)/2];
  65. do{
  66. while(nim[i]<tengah){
  67. i++;
  68. }
  69. while(tengah<nim[j]){
  70. j--;
  71. }
  72. if(i<=j){
  73. k=nim[i];
  74. nim[i]=nim[j];
  75. nim[j]=k;
  76.  
  77. temp=mhsc[i];
  78. mhsc[i]=mhsc[j];
  79. mhsc[j]=temp;
  80. i++;
  81. j--;
  82. }
  83. }while(i<=j);
  84. if(kiri<j){
  85. quick(kiri,j);
  86. }
  87. if(i<kanan){
  88. quick(i,kanan);
  89. }
  90. }
  91.  
  92. int main(){
  93. ka=kb=kc=0;
  94. printf("Masukkan banyaknya Mahasiswa kelas A: ");scanf("%d",&na);
  95. printf("Masukkan banyaknya Mahasiswa kelas B: ");scanf("%d",&nb);
  96. nc=na+nb;
  97.  
  98. printf("=====================\n");
  99. printf("| MAHASISWA KELAS A |\n");
  100. printf("=====================\n");
  101. for(i=0;i<na;i++){
  102. printf("\nData %d\n========\n",i+1);
  103. printf("Nama : ");fflush(stdin);gets(mhsa[i].nama);
  104. printf("NIM : ");scanf("%s",&mhsa[i].nim);
  105. printf("Nilai : ");scanf("%s",&mhsa[i].nilai);
  106. }
  107.  
  108. printf("\n=====================\n");
  109. printf("| MAHASISWA KELAS B |\n");
  110. printf("=====================\n");
  111. for(i=0;i<nb;i++){
  112. printf("\nData %d\n========\n",i+1);
  113. printf("Nama : ");fflush(stdin);gets(mhsb[i].nama);
  114. printf("NIM : ");scanf("%s",&mhsb[i].nim);
  115. printf("Nilai : ");scanf("%s",&mhsb[i].nilai);
  116. }
  117.  
  118. gabung();
  119.  
  120. do{
  121. ka=kb=kc=0;
  122. system("cls");
  123. printf("============\n");
  124. printf("| TP 5 6 7 |\n");
  125. printf("============\n\n");
  126. printf("1. Lihat Data\n");
  127. printf("2. Sorting Berdasarkan Nama\n");
  128. printf("3. Sorting Berdasarkan NIM\n");
  129. printf("4. Sorting Berdasarkan Nilai\n");
  130. printf("5. Keluar\n");
  131. printf("Masukkan pilihan: ");scanf("%d",&menu);
  132. switch(menu){
  133. case 1:
  134. system("cls");
  135. printf("==================\n");
  136. printf("| Data Mahasiswa |\n");
  137. printf("==================\n\n");
  138. for(i=0;i<nc;i++){
  139. printf("\nData %d\n========\n",i+1);
  140.  
  141. printf("Nama : %s\n",mhsc[i].nama);
  142. printf("NIM : %s\n",mhsc[i].nim);
  143. printf("Nilai : %s\n",mhsc[i].nilai);
  144. }
  145. break;
  146. case 2:
  147. system("cls");
  148. printf("==================\n");
  149. printf("| Sorting Nama |\n");
  150. printf("==================\n\n");
  151. printf("1. Ascending (Bubble Sort)\n");
  152. printf("2. Descending (Selection Sort)\n");
  153. printf("Masukkan pilihan: ");scanf("%d",&submenu);
  154. switch(submenu){
  155. case 1:
  156. system("cls");
  157. for(i=0;i<nc-1;i++){
  158. for(j=i+1;j<nc;j++){
  159. if(strcmp(mhsc[i].nama,mhsc[j].nama)>0){
  160. temp=mhsc[j];
  161. mhsc[j]=mhsc[i];
  162. mhsc[i]=temp;
  163.  
  164. tempnim=nim[j];
  165. nim[j]=nim[i];
  166. nim[i]=tempnim;
  167. }
  168. }
  169. }
  170. printf("==================\n");
  171. printf("| Ascending Nama |\n");
  172. printf("==================\n\n");
  173. for(i=0;i<nc;i++){
  174. printf("\nData %d\n========\n",i+1);
  175.  
  176. printf("Nama : %s\n",mhsc[i].nama);
  177. printf("NIM : %s\n",mhsc[i].nim);
  178. printf("Nilai : %s\n",mhsc[i].nilai);
  179. }
  180. break;
  181. case 2:
  182. system("cls");
  183. for(i=0;i<nc-1;i++){
  184. imin=i;
  185. for(j=i+1;j<nc;j++){
  186. if(strcmp(mhsc[imin].nama,mhsc[j].nama)<0){
  187. imin=j;
  188. }
  189. }
  190. tempnim=nim[imin];
  191. nim[imin]=nim[i];
  192. nim[i]=tempnim;
  193.  
  194. temp=mhsc[imin];
  195. mhsc[imin]=mhsc[i];
  196. mhsc[i]=temp;
  197. }
  198. printf("==================\n");
  199. printf("| Descending Nama |\n");
  200. printf("==================\n\n");
  201. for(i=0;i<nc;i++){
  202. printf("\nData %d\n========\n",i+1);
  203.  
  204. printf("Nama : %s\n",mhsc[i].nama);
  205. printf("NIM : %s\n",mhsc[i].nim);
  206. printf("Nilai : %s\n",mhsc[i].nilai);
  207. }
  208. break;
  209. default:
  210. break;
  211. }
  212. break;
  213. case 3:
  214. system("cls");
  215. printf("==================\n");
  216. printf("| Sorting NIM |\n");
  217. printf("==================\n\n");
  218. printf("1. Ascending (Insertion Sort)\n");
  219. printf("2. Descending (Quick Sort)\n");
  220. printf("Masukkan pilihan: ");scanf("%d",&submenu);
  221. switch(submenu){
  222. case 1:
  223. system("cls");
  224. for(i=1;i<nc;i++){
  225. temp=mhsc[i];
  226. k=nim[i];
  227. j=i-1;
  228. ketemu=0;
  229.  
  230. while(j>=0 && ketemu==0){
  231. if(k<nim[j]){
  232. mhsc[j+1]=mhsc[j];
  233. nim[j+1]=nim[j];
  234. j--;
  235. }else{
  236. ketemu=1;
  237. }
  238. }
  239. mhsc[j+1]=temp;
  240. nim[j+1]=k;
  241. }
  242. printf("===================\n");
  243. printf("| Ascending NIM |\n");
  244. printf("===================\n\n");
  245. for(i=0;i<nc;i++){
  246. printf("\nData %d\n========\n",i+1);
  247.  
  248. printf("Nama : %s\n",mhsc[i].nama);
  249. printf("NIM : %s\n",mhsc[i].nim);
  250. printf("Nilai : %s\n",mhsc[i].nilai);
  251. }
  252. break;
  253. case 2:
  254. system("cls");
  255. quick(0,nc);
  256. printf("==================\n");
  257. printf("| Descending NIM |\n");
  258. printf("==================\n\n");
  259. j=1;
  260. for(i=nc;i>0;i--){
  261. printf("\nData %d\n========\n",j);j++;
  262.  
  263. printf("Nama : %s\n",mhsc[i].nama);
  264. printf("NIM : %s\n",mhsc[i].nim);
  265. printf("Nilai : %s\n",mhsc[i].nilai);
  266. }
  267. break;
  268. default:
  269. break;
  270. }
  271. break;
  272. case 4:
  273. system("cls");
  274. printf("===================\n");
  275. printf("| Sorting Nilai |\n");
  276. printf("===================\n\n");
  277. printf("1. Ascending (Bubble Sort)\n");
  278. printf("2. Descending (Selection Sort)\n");
  279. printf("Masukkan pilihan: ");scanf("%d",&submenu);
  280. switch(submenu){
  281. case 1:
  282. system("cls");
  283. printf("=====================\n");
  284. printf("| Ascending Nilai |\n");
  285. printf("=====================\n\n");
  286. for(i=0;i<nc-1;i++){
  287. imin=i;
  288. for(j=i+1;j<nc;j++){
  289. if(strcmp(mhsc[imin].nilai,mhsc[j].nilai)>0){
  290. imin=j;
  291. }
  292. }
  293. tempnim=nim[imin];
  294. nim[imin]=nim[i];
  295. nim[i]=tempnim;
  296.  
  297. temp=mhsc[imin];
  298. mhsc[imin]=mhsc[i];
  299. mhsc[i]=temp;
  300. }
  301. for(i=0;i<nc;i++){
  302. printf("\nData %d\n========\n",i+1);
  303.  
  304. printf("Nama : %s\n",mhsc[i].nama);
  305. printf("NIM : %s\n",mhsc[i].nim);
  306. printf("Nilai : %s\n",mhsc[i].nilai);
  307. }
  308. break;
  309. case 2:
  310. system("cls");
  311. for(i=0;i<nc-1;i++){
  312. for(j=i+1;j<nc;j++){
  313. if(strcmp(mhsc[i].nilai,mhsc[j].nilai)<0){
  314. temp=mhsc[j];
  315. mhsc[j]=mhsc[i];
  316. mhsc[i]=temp;
  317.  
  318. tempnim=nim[j];
  319. nim[j]=nim[i];
  320. nim[i]=tempnim;
  321. }
  322. }
  323. }
  324. printf("======================\n");
  325. printf("| Descending Nilai |\n");
  326. printf("======================\n\n");
  327. for(i=0;i<nc;i++){
  328. printf("\nData %d\n========\n",i+1);
  329.  
  330. printf("Nama : %s\n",mhsc[i].nama);
  331. printf("NIM : %s\n",mhsc[i].nim);
  332. printf("Nilai : %s\n",mhsc[i].nilai);
  333. }
  334. break;
  335. }
  336. break;
  337. case 5:
  338. system("cls");
  339. break;
  340. default:
  341. break;
  342. }
  343. system("pause");
  344. }while(menu!=5);
  345. return 0;
  346. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement