Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct{
- char nama[30],nim[10],nilai[3];
- }mahasiswa;
- /*
- 2
- 1
- Fitri Ana Dewi
- 1307639
- 99
- Tia Ayu Magfiroh
- 1307680
- 88
- Sayyidah Nurul Hayati
- 1300551
- 89
- */
- mahasiswa mhsa[10];
- mahasiswa mhsb[10];
- mahasiswa mhsc[20];
- mahasiswa temp;
- int na,nb,nc,ka,kb,kc,i,j,k,menu,submenu,imin,nim[20],ketemu,tempnim;
- void gabung(){
- while(ka<na){
- mhsc[kc]=mhsa[ka];
- nim[kc]=atoi(mhsa[ka].nim);
- kc++;
- ka++;
- }
- while(kb<nb){
- mhsc[kc]=mhsb[kb];
- nim[kc]=atoi(mhsb[kb].nim);
- kc++;
- kb++;
- }
- for(i=0;i<nc-1;i++){
- imin=i;
- for(j=i+1;j<nc;j++){
- if(strcmp(mhsc[imin].nim,mhsc[j].nim)>0){
- imin=j;
- }
- }
- tempnim=nim[imin];
- nim[imin]=nim[i];
- nim[i]=tempnim;
- temp=mhsc[imin];
- mhsc[imin]=mhsc[i];
- mhsc[i]=temp;
- }
- }
- void quick(int kiri,int kanan){
- int i,j,tengah;
- i=kiri;
- j=kanan;
- tengah=nim[(kiri+kanan)/2];
- temp=mhsc[(kiri+kanan)/2];
- do{
- while(nim[i]<tengah){
- i++;
- }
- while(tengah<nim[j]){
- j--;
- }
- if(i<=j){
- k=nim[i];
- nim[i]=nim[j];
- nim[j]=k;
- temp=mhsc[i];
- mhsc[i]=mhsc[j];
- mhsc[j]=temp;
- i++;
- j--;
- }
- }while(i<=j);
- if(kiri<j){
- quick(kiri,j);
- }
- if(i<kanan){
- quick(i,kanan);
- }
- }
- int main(){
- ka=kb=kc=0;
- printf("Masukkan banyaknya Mahasiswa kelas A: ");scanf("%d",&na);
- printf("Masukkan banyaknya Mahasiswa kelas B: ");scanf("%d",&nb);
- nc=na+nb;
- printf("=====================\n");
- printf("| MAHASISWA KELAS A |\n");
- printf("=====================\n");
- for(i=0;i<na;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : ");fflush(stdin);gets(mhsa[i].nama);
- printf("NIM : ");scanf("%s",&mhsa[i].nim);
- printf("Nilai : ");scanf("%s",&mhsa[i].nilai);
- }
- printf("\n=====================\n");
- printf("| MAHASISWA KELAS B |\n");
- printf("=====================\n");
- for(i=0;i<nb;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : ");fflush(stdin);gets(mhsb[i].nama);
- printf("NIM : ");scanf("%s",&mhsb[i].nim);
- printf("Nilai : ");scanf("%s",&mhsb[i].nilai);
- }
- gabung();
- do{
- ka=kb=kc=0;
- system("cls");
- printf("============\n");
- printf("| TP 5 6 7 |\n");
- printf("============\n\n");
- printf("1. Lihat Data\n");
- printf("2. Sorting Berdasarkan Nama\n");
- printf("3. Sorting Berdasarkan NIM\n");
- printf("4. Sorting Berdasarkan Nilai\n");
- printf("5. Keluar\n");
- printf("Masukkan pilihan: ");scanf("%d",&menu);
- switch(menu){
- case 1:
- system("cls");
- printf("==================\n");
- printf("| Data Mahasiswa |\n");
- printf("==================\n\n");
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- case 2:
- system("cls");
- printf("==================\n");
- printf("| Sorting Nama |\n");
- printf("==================\n\n");
- printf("1. Ascending (Bubble Sort)\n");
- printf("2. Descending (Selection Sort)\n");
- printf("Masukkan pilihan: ");scanf("%d",&submenu);
- switch(submenu){
- case 1:
- system("cls");
- for(i=0;i<nc-1;i++){
- for(j=i+1;j<nc;j++){
- if(strcmp(mhsc[i].nama,mhsc[j].nama)>0){
- temp=mhsc[j];
- mhsc[j]=mhsc[i];
- mhsc[i]=temp;
- tempnim=nim[j];
- nim[j]=nim[i];
- nim[i]=tempnim;
- }
- }
- }
- printf("==================\n");
- printf("| Ascending Nama |\n");
- printf("==================\n\n");
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- case 2:
- system("cls");
- for(i=0;i<nc-1;i++){
- imin=i;
- for(j=i+1;j<nc;j++){
- if(strcmp(mhsc[imin].nama,mhsc[j].nama)<0){
- imin=j;
- }
- }
- tempnim=nim[imin];
- nim[imin]=nim[i];
- nim[i]=tempnim;
- temp=mhsc[imin];
- mhsc[imin]=mhsc[i];
- mhsc[i]=temp;
- }
- printf("==================\n");
- printf("| Descending Nama |\n");
- printf("==================\n\n");
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- default:
- break;
- }
- break;
- case 3:
- system("cls");
- printf("==================\n");
- printf("| Sorting NIM |\n");
- printf("==================\n\n");
- printf("1. Ascending (Insertion Sort)\n");
- printf("2. Descending (Quick Sort)\n");
- printf("Masukkan pilihan: ");scanf("%d",&submenu);
- switch(submenu){
- case 1:
- system("cls");
- for(i=1;i<nc;i++){
- temp=mhsc[i];
- k=nim[i];
- j=i-1;
- ketemu=0;
- while(j>=0 && ketemu==0){
- if(k<nim[j]){
- mhsc[j+1]=mhsc[j];
- nim[j+1]=nim[j];
- j--;
- }else{
- ketemu=1;
- }
- }
- mhsc[j+1]=temp;
- nim[j+1]=k;
- }
- printf("===================\n");
- printf("| Ascending NIM |\n");
- printf("===================\n\n");
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- case 2:
- system("cls");
- quick(0,nc);
- printf("==================\n");
- printf("| Descending NIM |\n");
- printf("==================\n\n");
- j=1;
- for(i=nc;i>0;i--){
- printf("\nData %d\n========\n",j);j++;
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- default:
- break;
- }
- break;
- case 4:
- system("cls");
- printf("===================\n");
- printf("| Sorting Nilai |\n");
- printf("===================\n\n");
- printf("1. Ascending (Bubble Sort)\n");
- printf("2. Descending (Selection Sort)\n");
- printf("Masukkan pilihan: ");scanf("%d",&submenu);
- switch(submenu){
- case 1:
- system("cls");
- printf("=====================\n");
- printf("| Ascending Nilai |\n");
- printf("=====================\n\n");
- for(i=0;i<nc-1;i++){
- imin=i;
- for(j=i+1;j<nc;j++){
- if(strcmp(mhsc[imin].nilai,mhsc[j].nilai)>0){
- imin=j;
- }
- }
- tempnim=nim[imin];
- nim[imin]=nim[i];
- nim[i]=tempnim;
- temp=mhsc[imin];
- mhsc[imin]=mhsc[i];
- mhsc[i]=temp;
- }
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- case 2:
- system("cls");
- for(i=0;i<nc-1;i++){
- for(j=i+1;j<nc;j++){
- if(strcmp(mhsc[i].nilai,mhsc[j].nilai)<0){
- temp=mhsc[j];
- mhsc[j]=mhsc[i];
- mhsc[i]=temp;
- tempnim=nim[j];
- nim[j]=nim[i];
- nim[i]=tempnim;
- }
- }
- }
- printf("======================\n");
- printf("| Descending Nilai |\n");
- printf("======================\n\n");
- for(i=0;i<nc;i++){
- printf("\nData %d\n========\n",i+1);
- printf("Nama : %s\n",mhsc[i].nama);
- printf("NIM : %s\n",mhsc[i].nim);
- printf("Nilai : %s\n",mhsc[i].nilai);
- }
- break;
- }
- break;
- case 5:
- system("cls");
- break;
- default:
- break;
- }
- system("pause");
- }while(menu!=5);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement