Guest User

Untitled

a guest
Jul 23rd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.57 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #define ARRAYSIZE(arr)      (sizeof(arr)/sizeof(arr[0]))
  6.  
  7. int maxarr(int* marr, int n);
  8. void nullarr(int* marr, int n);
  9. void randomizearr(int* marr, int n, int num1, int num2, int seed);
  10. void outputarr(int* marr, int n);
  11. void invert(int* marr, int n);
  12. void savetofile(int* marr, int n, int nwarr);
  13. void readfromfile(int* marr, int n, int nwarr);
  14. void deletefromto(int* marr, int *n);
  15. void addfromto(int* marr, int n);
  16. void sortarr(int* marr, int n);
  17. void bsortarr(int* marr, int n);
  18. int main()
  19. {
  20.     int sd=1;
  21.     int m1[9]; int m2[7]; int m3[8]; int m4[7];
  22.     randomizearr(m1,ARRAYSIZE(m1),14,20,sd); sd++;
  23.     randomizearr(m2,ARRAYSIZE(m2),14,20,sd); sd++;
  24.     randomizearr(m3,ARRAYSIZE(m3),14,2100,sd);
  25.     outputarr(m1,ARRAYSIZE(m1));
  26.     outputarr(m2,ARRAYSIZE(m2));
  27.     outputarr(m3,ARRAYSIZE(m3));
  28.  
  29.     printf("\n Max. elements of m1,m2,m3: %d %d %d \n ",maxarr(m1,ARRAYSIZE(m1)),maxarr(m2,ARRAYSIZE(m2)),maxarr(m3,ARRAYSIZE(m3)));
  30.  
  31.     int m1s=ARRAYSIZE(m1),m2s=ARRAYSIZE(m2),m3s=ARRAYSIZE(m3);
  32.     int x,y,f1,f2,f3;
  33.     for(x=0;x<7;x++){
  34.     m4[x]=x+14;
  35.     }
  36.     for(x=0;x<7;x++){
  37.         f1=0;f2=0;f3=0;
  38.         for(y=0;y<ARRAYSIZE(m1);y++){
  39.             if (m1[y]==m4[x]) {
  40.                     f1=1;
  41.                 }
  42.         }
  43.         for(y=0;y<ARRAYSIZE(m2);y++){
  44.             if (m2[y]==m4[x]) {
  45.                     f2=1;
  46.                 }
  47.         }
  48.         for(y=0;y<ARRAYSIZE(m3);y++){
  49.             if (m3[y]==m4[x]) {
  50.                     f3=1;
  51.                 }
  52.         }
  53.         if (!(f1 && f2 && f3)) m4[x]=0;
  54.     }
  55.     printf("\n All arrays contain: ");
  56.  
  57.     for(x=0;x<7;x++) {
  58.         if (m4[x]!=0) printf("%d ",m4[x]);
  59.     }
  60.     printf("\n");
  61.  
  62.  
  63.     printf ("Input number and number of array: \n 1 - to make array full of NULL \n 2 - to reload array \n 3 - to find max. el. \n 4 - to output array \n 5 - to invert \n 6 - save to file \n 7 - read from file \n 8 - to add \n 9 - to delete \n 10 - to sort \n 11 - to better sort \n 0 - to exit\n ");
  64.     int menup,nwarr; int* was; int* warr;
  65.     do{
  66.     printf(" \n ");
  67.     scanf("%d",&menup); if (menup==0) break;
  68.     scanf("%d",&nwarr);
  69.     switch(nwarr){
  70.         case 1: warr=m1; was=&m1s; break;
  71.         case 2: warr=m2; was=&m2s; break;
  72.         case 3: warr=m3; was=&m3s; break;
  73.     }
  74.     switch(menup){
  75.         case 1: nullarr(warr,*was); break;
  76.         case 2: randomizearr(warr,*was,14,20,sd); sd++; break;
  77.         case 3: printf("\n Max. elements of your arr is %d \n ",maxarr(warr,*was)); break;
  78.         case 4: outputarr(warr,*was); break;
  79.         case 5: invert(warr,*was); break;
  80.         case 6: savetofile(warr,*was,nwarr); break;
  81.         case 7: readfromfile(warr,*was,nwarr); break;
  82.         case 8: addfromto(warr, *was); break;
  83.         case 9: deletefromto(warr, was); break;
  84.         case 10: sortarr(warr,*was); break;
  85.         case 11: bsortarr(warr,*was); break;
  86.     }
  87.     } while(1);
  88.  
  89.     printf("\n");
  90.     return 0;
  91.  
  92. }
  93.  
  94. void outputarr(int* marr, int n){
  95.     int i;
  96.     for (i=0;i<n;i++){
  97.         printf("%4d  ",i);
  98.     }
  99.     printf("\n");
  100.     for (i=0;i<n;i++){
  101.         printf("%4d  ",marr[i]);
  102.     }
  103.     printf("\n");printf("\n");
  104. }
  105.  
  106. void nullarr(int* marr, int n){
  107.     int i;
  108.     for (i=0;i<n;i++){
  109.         marr[i]=0;
  110.     }
  111. }
  112.  
  113. void randomizearr(int* marr, int n, int num1, int num2, int seed){
  114.     int i;
  115.     srand((unsigned)time(NULL)*seed);
  116.     for (i=0;i<n;i++){
  117.         marr[i]=rand()%(num2-num1+1)+num1;
  118.     }
  119. }
  120.  
  121. int maxarr(int* marr, int n){
  122.     int i,maxnum;
  123.     maxnum=0;
  124.     for (i=1;i<n;i++){
  125.         if(marr[maxnum] < marr[i]) maxnum=i;
  126.     }
  127.     return maxnum;
  128. }
  129.  
  130. void invert(int* marr, int n){
  131.     int i,buff,cn;
  132.     for (i=2;i<=n/2;i+=2){
  133.         cn=(n/2)*2-i+2;
  134.         buff=marr[i-1];
  135.         marr[i-1]=marr[cn-1];
  136.         marr[cn-1]=buff;
  137.     }
  138. }
  139.  
  140. void savetofile(int* marr, int n, int nwarr){
  141.     FILE *fp; char buff[10]; int l;
  142.     sprintf(buff,"m%d.txt", nwarr);
  143.     if ((fp = fopen(buff,"w"))==NULL) {
  144.     printf("Error!\n");
  145.     exit(1);
  146.     }
  147.  
  148.     for(l=0;l<n;l++){
  149.         sprintf(buff,"%d", marr[l]);
  150.         fputs(buff,fp);
  151.         fputc(' ',fp);
  152.     }
  153.  
  154.     fclose(fp);
  155. }
  156.  
  157. void readfromfile(int* marr, int n, int nwarr){
  158.     FILE *fp; char buff[10]; int l;
  159.     sprintf(buff,"m%d.txt", nwarr);
  160.     if ((fp = fopen(buff,"r"))==NULL) {
  161.     printf("Error!\n");
  162.     exit(1);
  163.     }
  164.     char filstr[600],numb[600];
  165.     fgets(filstr,sizeof(filstr),fp);
  166.     int m=0,i=0,nm=1,sl;
  167.     sl=strlen(filstr);
  168.     for(l=0;l<sl-1;l++){
  169.          if ((filstr[l]==' ') || (l==sl-1)) {
  170.                numb[m]='\0';
  171.                marr[i]=nm*atoi(numb);
  172.                m=0; nm=1; numb[0]='\0'; i++;
  173.                continue;
  174.             }
  175.         if (filstr[l]=='-') nm=-1;
  176.         else {
  177.                 numb[m]=filstr[l]; m++;
  178.             }
  179.         }
  180.     fclose(fp);
  181.     outputarr(marr,n);
  182. }
  183.  
  184. void deletefromto(int* marr, int* n){
  185.     int i; int from; int to;
  186.     printf("Input from and to:  ");scanf("%d",&from);scanf("%d",&to);
  187.     for (i=to+1;i<*n;i++){
  188.         marr[i-from-2]=marr[i];
  189.     }
  190.     *n=*n-(to-from+1);
  191. }
  192.  
  193. void addfromto(int* marr, int n){
  194.     int i; int from; int to;
  195.     printf("Add from and to:  ");scanf("%d",&from);scanf("%d",&to);
  196.     int* addnum;
  197.     addnum=malloc((to-from+1)*sizeof(int));
  198.     for (i=0;i<(to-from+1);i++) scanf("%d",&addnum[i]);
  199.     for (i=to+1;i<n;i++){
  200.         marr[i]=marr[i-from-2];
  201.     }
  202.     for (i=from;i<=to;i++){
  203.         marr[i]=addnum[i-from];
  204.     }
  205.     free(addnum);
  206. }
  207. void sortarr(int* marr, int n){
  208.        int n1=0,n2=0,i,j,buff;
  209.        for (i=0;i<n-1;i++)
  210.         for (j=0;j<n-1-i;j++){
  211.             n1++;
  212.             if (marr[j]>marr[j+1]){
  213.                 buff=marr[j];
  214.                 marr[j]=marr[j+1];
  215.                 marr[j+1]=buff;
  216.                 n2++;
  217.             }
  218.         }
  219.         printf("\n Number of comparsions: %d",n1);
  220.         printf("\n Number of conversions: %d",n2);
  221.         printf("\n");
  222. }
  223.  
  224. void bsortarr(int* marr, int n){
  225.        int n1=0,n2=0,i,j,f1,buff;
  226.        for (i=0;i<n-1;i++){
  227.         f1=1;
  228.         for (j=0+(i%2)*(n-i-1);(j<n-1-i)*((i%2)-1)||(j>=0)*(i%2);j+=((i+1)%2)-((i)%2)){
  229.             n1++;
  230.             if (marr[j]>marr[j+1]){
  231.                 buff=marr[j];
  232.                 marr[j]=marr[j+1];
  233.                 marr[j+1]=buff;
  234.                 n2++; f1=0;
  235.             }
  236.         }
  237.         if (f1) break;
  238.         }
  239.         printf("\n Number of comparsions: %d",n1);
  240.         printf("\n Number of conversions: %d",n2);
  241.         printf("\n");
  242. }
Add Comment
Please, Sign In to add comment