Advertisement
Guest User

rass

a guest
May 26th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define BUFLEN 10
  5.  
  6. typedef struct mRida{
  7. int *rida;
  8. } mRida;
  9. typedef struct matrix{
  10. mRida *mRead;
  11. int max;
  12. int a;
  13. int n;
  14. } matrix;
  15.  
  16. void loeRead(matrix *x, char *fnimi);
  17. void lisaRida(matrix *x, int abi[]);
  18. void arvutamine(matrix *x, char *fonimi);
  19. void vabasta(matrix *x);
  20.  
  21. int main(void)
  22. {
  23. matrix x = {NULL, 0, 0, 0};
  24. loeRead(&x, "sisend.txt");
  25. arvutamine(&x, "valja.txt");
  26. vabasta(&x);
  27. return 0;
  28. }
  29.  
  30. void loeRead(matrix *x, char *fnimi)
  31. {
  32. FILE *f = fopen(fnimi, "r");
  33. int N, i;
  34. if(f == NULL)
  35. {
  36. printf("Faili %s ei saanud avada \n", fnimi);
  37. exit(0);
  38. }
  39. if(fscanf(f, "%d", &N)==1)
  40. {
  41. if(N > 0 && N < 11)
  42. {
  43. x->n = N;
  44. x->a++;
  45. }
  46. else
  47. {
  48. printf("Ruutmaatriks on liiga suur/vaike");
  49. exit(0);
  50. }
  51. }
  52. int abi[N];
  53. while(!feof(f))
  54. {
  55. for(i = 0; i < x->n;i++)
  56. {
  57. fscanf(f, "%d", &abi[i]);
  58. }
  59. lisaRida(x, abi);
  60. }
  61. fclose(f);
  62. }
  63.  
  64. void lisaRida(matrix *x, int abi[])
  65. {
  66. mRida *pAbi = NULL;
  67. int *rAbi;
  68. int i;
  69. if(x->max <= x->a) //pole ruumi lisada
  70. {
  71. x->max = (x->max + 2) * 2;
  72. pAbi = (mRida*)realloc
  73. (x->mRead, x->max * sizeof(mRida));
  74. if(abi != NULL){
  75. x->mRead = pAbi;
  76. }
  77. }
  78.  
  79. rAbi = malloc(sizeof(int));
  80. if(abi != NULL)
  81. {
  82. x->mRead[x->a].rida= rAbi;
  83. }
  84.  
  85. for(i = 0; i<x->n;i++)
  86. x->mRead[x->a].rida[i] = abi[i];
  87. for(i = 0; i<x->n;i++)
  88. printf(" %3d ", x->mRead[x->a].rida[i]);
  89. printf("\n");
  90. x->a++;
  91. }
  92. void arvutamine(matrix *x, char *fonimi)
  93. {
  94. FILE *fo = fopen(fonimi, "w");
  95. if(fo == NULL)
  96. {
  97. printf("Faili %s ei saanud avada \n", fonimi);
  98. exit(0);
  99. }
  100. int i, j, arv;
  101. // I = RIDA
  102. // J = VEERG
  103. for(i=0;i<x->n;i++)
  104. {
  105. for(j=0;j<x->n;j++)
  106. fprintf(fo," %3d ", x->mRead[i+1].rida[j]);
  107. fprintf(fo, "\n");
  108. }
  109. printf("===uus maatriks B===\n");
  110. fprintf(fo,"===uus maatriks B===\n");
  111. for(i=0;i<x->n;i++)
  112. {
  113. for(j=0;j<x->n;j++)
  114. {
  115. arv = (x->mRead[i+1].rida[j] *
  116. x->mRead[j+1].rida[i]);
  117. printf(" %3d ", arv);
  118. fprintf(fo," %3d ", arv);
  119. }
  120. printf("\n");
  121. fprintf(fo, "\n");
  122. }
  123. fclose(fo);
  124. }
  125. void vabasta(matrix *x)
  126. {
  127. int i;
  128. for(i=0; i < (x->n); i++)
  129. {
  130. free((x->mRead+i)->(rida + j));
  131. }
  132. free(x->mRead);
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement