Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. //MatrixOp.x
  2. struct matrix{
  3. float n00;
  4. float n01;
  5. float n10;
  6. float n11;
  7. };
  8.  
  9. struct doubleInput{
  10. struct matrix in0;
  11. struct matrix in1;
  12. char operation;
  13. };
  14.  
  15. struct singleInput{
  16. struct matrix in;
  17. char operation;
  18. };
  19.  
  20. program MATRIXOP_PROG{
  21. version MATRIXOP_VER{
  22. struct matrix ADD(doubleInput) = 1;
  23. } = 1;
  24. } = 0x2fffffff;
  25.  
  26. //Client----------------------------------------------------------
  27. #include "matrixOp.h"
  28. //CLIENT
  29.  
  30. struct matrix matrixOp_prog_1(char *host, struct matrix m0, struct matrix m1, char op, CLIENT *clnt){
  31. struct matrix *result;
  32. struct doubleInput din;
  33. if(op == 'a'){
  34. din.in0 = m0;
  35. din.in1 = m1;
  36. din.operation = op;
  37. result = add_1(&din, clnt);
  38. if(result == (float *) NULL) clnt_perror(clnt, "add failed");
  39. return &result;
  40. }
  41. }
  42.  
  43. int main(int argc, char *argv[]){
  44. char *host;
  45. float m0_00, m0_01, m0_10, m0_11;
  46. float m1_00, m1_01, m1_10, m1_11;
  47. char operation;
  48.  
  49. struct matrix m0;
  50. struct matrix m1;
  51.  
  52. CLIENT *clnt;
  53.  
  54. if(argc<2){
  55. printf("Specify host. Probably localhost");
  56. exit(1);
  57. }
  58.  
  59. printf("Welcome to addition\n");
  60. printf("Enter m0_00:");
  61. scanf("%f", &m0_00);
  62. printf("Enter m0_01:");
  63. scanf("%f", &m0_01);
  64. printf("Enter m0_10:");
  65. scanf("%f", &m0_10);
  66. printf("Enter m0_11:");
  67. scanf("%f", &m0_11);
  68.  
  69. m0.n00 = m0_00;
  70. m0.n01 = m0_01;
  71. m0.n10 = m0_10;
  72. m0.n11 = m0_11;
  73.  
  74. printf("Enter m1_00:");
  75. scanf("%f", &m1_00);
  76. printf("Enter m1_01:");
  77. scanf("%f", &m1_01);
  78. printf("Enter m1_10:");
  79. scanf("%f", &m1_10);
  80. printf("Enter m1_11:");
  81. scanf("%f", &m1_11);
  82.  
  83. m1.n00 = m1_00;
  84. m1.n01 = m1_01;
  85. m1.n10 = m1_10;
  86. m1.n11 = m1_11;
  87.  
  88. operation = 'a';
  89.  
  90. host = argv[1];
  91. clnt = clnt_create(host, MATRIXOP_PROG, MATRIXOP_VER, "udp");
  92. if(clnt==null){
  93. clnt_pcreateerror(host);
  94. exit(1);
  95. }
  96.  
  97. struct matrix ans = matrixOp_prog_1(host, m0, m1, operation, clnt);
  98.  
  99. printf("Answer: (%f, %f), (%f, %f)", ans->n00, ans->n01, ans->n10, ans->n11);
  100.  
  101. clnt_destroy(clnt);
  102. exit(0);
  103. }
  104.  
  105. //-----------------------------------------
  106.  
  107. //#SERVER
  108. #include "matrixOp.h"
  109.  
  110. struct matrix * add_1_svc(struct doubleInput in, struct svc_req *rqstp){
  111. struct matrix result;
  112. result.n00 = in.in0.n00 + in.in1.n00;
  113. result.n01 = in.in0.n01 + in.in1.n01;
  114. result.n10 = in.in0.n10 + in.in1.n10;
  115. result.n11 = in.in0.n11 + in.in1.n11;
  116. return &result;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement