42 LAMPIRAN LISTING PROGRAM ALGORITMA SMS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h> main() FILE *pf,*qf; int data_bil[100000], PosArray[100000], NegArray[100000]; int FreqArray[100000],size,NOP,NON; int maks,minim,a,b,c,d,i,x,y,indeks,angka; char kalimat[8],data_text[7],nama[20]; double start,stop; printf("program PENGURUTAN DATA MENGGUNAKAN ALGORITMA SMS\n"); printf(" Created By : Denni Aprilsyah Lubis\n"); printf(" Email : denni.lubis@gmail.com\n\n"); printf("masukkan Nama File Input (Dengan Ekstensi) : "); gets(nama); /*Buka File*/ if ((pf=fopen(nama,"r")) == NULL) printf("file Input Tidak Dapat Dibuka!!!\r\n"); size=0; while(fgets(kalimat,8,pf)) for(i=0;i<strlen(kalimat);i++) if ((kalimat[i]!=32) (kalimat[i]!=9)) data_text[i]=kalimat[i]; data_bil[size]=atoi(data_text); size++; fclose(pf); start = clock(); /*Prosedur Scan*/ if (size>1) maks=data_bil[0];
43 minim=data_bil[0]; NOP=0; NON=0; for (a=0;a<size;a++) if (data_bil[a] > maks) maks=data_bil[a]; if (data_bil[a] < minim) minim=data_bil[a]; if (data_bil[a] >= 0) NOP = NOP+1; NON = NON+1; if (minim!= maks) /*Prosedur Move*/ i=0; for (a=0;a<size;a++) FreqArray[a]= minim-1; if (NOP>0) for (b=0;b<=maks;b++) PosArray[b]=minim-1; if (NON>0) for (c=0;c<=abs(minim);c++) NegArray[c]= minim-1; for (d=0;d<size;d++) if (data_bil[d]>=0) if (PosArray[data_bil[d]] == minim-1) PosArray[data_bil[d]] = data_bil[d]; FreqArray[i]=data_bil[d]; i++; if (NegArray[abs(data_bil[d])] == minim-1)
44 NegArray[abs(data_bil[d])] = data_bil[d] ; FreqArray[i] = data_bil[d]; i++; printf ("Data Yang di Input Merupakan Data Yang Sudah Terurut\n"); /*Prosedur Sort*/ indeks=0; if (NON>0) for (x=abs(minim);x>=0;x--) if (NegArray[x]!= minim-1) data_bil[indeks]= NegArray[x]; for (y=0;y<=i;y++) if (FreqArray[y]==data_bil[indeks-1]) data_bil[indeks]= FreqArray[y]; if (NOP>0) for (x=0;x<=maks;x++) if (PosArray[x]!= minim-1) data_bil[indeks]= PosArray[x]; for (y=0;y<=i;y++) if (FreqArray[y]==data_bil[indeks-1])
45 data_bil[indeks]=freqarray[y]; stop = clock(); /* Ciptakan file.txt */ if ((qf = fopen("data Terurut By SMS.txt","w")) == NULL) printf("file Data Terurut By SMS.txt Tidak Dapat Diciptakan!\r\n"); for (x=0;x<indeks;x++) itoa(data_bil[x],data_text,10); fputs(data_text,qf); fputc('\n',qf); printf("proses Pengurutan Berhasil,Data Yang Terurut Telah Berhasil Tersimpan...\n"); printf("waktu eksekusi Program: %.0f ms", (stop-start)); fclose(qf); return(0); printf("data Tidak Mencukupi Untuk di Urutkan,Array Hanya Berisi 1 (Satu) Data...\n"); return (0);
46 LAMPIRAN LISTING PROGRAM PENGEMBANGAN ALGORITMA SMS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <time.h> main() FILE *pf,*qf; int data_bil[100000], PosArray[100000], NegArray[100000]; int FreqPosArray[100000],FreqNegArray[100000],size,NOP,NON; int maxneg,minneg,maxpos,minpos,a,b,c,d,i,j,x,y,indeks,angka; char kalimat[8],data_text[7],nama[20]; double start,stop; printf("program PENGURUTAN DATA MENGGUNAKAN PENGEMBANGAN ALGORITMA SMS\n"); printf(" Created By : Denni Aprilsyah Lubis\n"); printf(" Email : denni.lubis@gmail.com\n\n"); printf("masukkan Nama File Input (Dengan Ekstensi) : "); gets(nama); /*Buka File*/ if ((pf=fopen(nama,"r")) == NULL) printf("file Tak Dapat Dibuka!!!\r\n"); size=0; while(fgets(kalimat,8,pf)) for(i=0;i<strlen(kalimat);i++) if ((kalimat[i]!=32) (kalimat[i]!=9)) data_text[i]=kalimat[i]; data_bil[size]=atoi(data_text); size++; fclose(pf); start = clock(); /*Prosedur Scan*/ if (size>1)
47 maxpos=0; minpos=100000; maxneg=-100000; minneg=-1; NOP=0; NON=0; for (a=0;a<size;a++) if (data_bil[a] >= 0) NOP++; if (data_bil[a] > maxpos) maxpos = data_bil[a]; if (data_bil[a] < minpos) minpos=data_bil[a]; NON++; if (data_bil[a] < minneg) minneg=data_bil[a]; if (data_bil[a] > maxneg) maxneg=data_bil[a]; if (maxneg < minneg) maxneg = minneg; if (minpos > maxpos) minpos = maxpos; if ((minpos!=maxpos)&&(minneg!=maxneg)) /*Prosedur Move*/ i=0; j=0; for (a=0;a<size;a++) FreqPosArray[a]= minneg-1; FreqNegArray[a]= minneg-1; if (NOP>0) for (b=minpos;b<=maxpos;b++) PosArray[b]=minneg-1; if (NON>0) for (c=abs(maxneg);c<=abs(minneg);c++) NegArray[c]= minneg-1;
48 for (d=0;d<size;d++) if (data_bil[d]>=0) if (PosArray[data_bil[d]] == minneg-1) PosArray[data_bil[d]] = data_bil[d]; FreqPosArray[i]=data_bil[d]; i++; if (NegArray[abs(data_bil[d])] == minneg-1) NegArray[abs(data_bil[d])] = data_bil[d] ; FreqNegArray[j] = data_bil[d]; j++; printf ("Data Yang di Input Merupakan Data Yang Sudah Terurut\n"); /*Prosedur Sort*/ indeks=0; if (NON>0) for (x=abs(minneg);x>=abs(maxneg);x--) if (NegArray[x]!= minneg-1) data_bil[indeks]= NegArray[x]; for (y=0;y<=j;y++) if (FreqNegArray[y]==data_bil[indeks-1]) data_bil[indeks]= FreqNegArray[y];
49 if (NOP>0) for (x=minpos;x<=maxpos;x++) if (PosArray[x]!= minneg-1) data_bil[indeks]= PosArray[x]; for (y=0;y<=i;y++) if (FreqPosArray[y]==data_bil[indeks-1]) data_bil[indeks]=freqposarray[y]; stop = clock(); /* Ciptakan file.txt */ if ((qf = fopen("data Terurut By SMS Plus.txt","w")) == NULL) printf("file tak dapat diciptakan!\r\n"); for (a=0;a<indeks;a++) itoa(data_bil[a],data_text,10); fputs(data_text,qf); fputc('\n',qf); printf("proses Pengurutan Berhasil,Data Yang Terurut Telah Berhasil Tersimpan...\n"); printf("waktu eksekusi Program: %.0f ms", (stop-start)); fclose(qf); return(0);
50 printf("data Tidak Mencukupi Untuk di Urutkan,Array Hanya Berisi 1 (Satu) Data...\n"); return (0);