1.  
  2. // conveyor.cpp : Defines the entry point for the console application.
  3. //
  4.  
  5. #include "stdafx.h"
  6. #include <stdio.h>
  7.  
  8. int main(int argc, char** argv)
  9. {
  10. char mass[3][3][4];
  11. char result[3][12];
  12. char result_binary[3][12]={0};
  13. char mass_binary[3][3][4]={0};
  14. int i,j,k,l,t,position;
  15.  
  16. //Cчитывание файлов со структурой выполнения отдельных задач на конвейере
  17. FILE *f=fopen("1.txt","r");
  18. fread(mass[0][0],1,4,f); fseek(f,2,SEEK_CUR);
  19. fread(mass[0][1],1,4,f); fseek(f,2,SEEK_CUR);
  20. fread(mass[0][2],1,4,f); fseek(f,2,SEEK_CUR);
  21. fclose(f);
  22. f=fopen("2.txt","r");
  23. fread(mass[1][0],1,4,f); fseek(f,2,SEEK_CUR);
  24. fread(mass[1][1],1,4,f); fseek(f,2,SEEK_CUR);
  25. fread(mass[1][2],1,4,f); fseek(f,2,SEEK_CUR);
  26. fclose(f);
  27. f=fopen("3.txt","r");
  28. fread(mass[2][0],1,4,f); fseek(f,2,SEEK_CUR);
  29. fread(mass[2][1],1,4,f); fseek(f,2,SEEK_CUR);
  30. fread(mass[2][2],1,4,f); fseek(f,2,SEEK_CUR);
  31. fclose(f);
  32. for(k=0;k<3;k++)
  33. for(i=0;i<3;i++)
  34. for(j=0;j<4;j++)
  35. {
  36. result[k][i*4+j]='0';
  37. if(mass[k][i][j]=='0') mass_binary[k][i][j]=0;
  38. else mass_binary[k][i][j]=1;
  39. }
  40.  
  41. //Формирование оптимального плана выполнения всех трех задач
  42. //на 3-х уровневом 12-ти ступенчатом конвейере
  43. position=0; t=0;
  44. do
  45. {
  46. for(i=0;i<3;i++)
  47. for(j=0;j<4;j++)
  48. if(mass_binary[t%3][i][j]==1)
  49. { result_binary[i][j+position]=1; result[i][j+position]=mass[t%3][i][j]; }
  50. t++;
  51. for(k=0;;k++)
  52. {
  53. l=0;
  54. for(i=0;i<3;i++)
  55. for(j=0;j<4;j++)
  56. if(result_binary[i][j+k]==mass_binary[t%3][i][j] && mass_binary[t%3][i][j]==1)
  57. { l=1; i=3; j=4; }
  58. if(l==0) break;
  59. }
  60. position=k;
  61. } while(position+2 < 12); // } while(position+3 < 12); если четвертая ступень все таки значима
  62.  
  63. f=fopen("Result.txt","w");
  64. fwrite(result[0],1,12,f); fprintf(f,"\n");
  65. fwrite(result[1],1,12,f); fprintf(f,"\n");
  66. fwrite(result[2],1,12,f); fprintf(f,"\n");
  67. fclose(f);
  68.  
  69. return 0;
  70. }