Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. //Mátrix nyoma: a mátrix főátlóinak összege
  2. /*
  3. ab
  4. cd
  5.  
  6. ef
  7. gh
  8.  
  9. ae + bf + cg + dh
  10. */
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h> //malloc miatt kell
  14.  
  15. double** mtx_general(int sor, int oszlop) { //2 csillag, mert 2 dimenzios
  16. double** mtx = (double**)malloc(sizeof(double*) * sor); //malloccal lekérdezzük, hogy 1 elem mekkora memóriaterületet foglal, aminek elemei double* típusúak (vektor), és "sor" db van belőle
  17. for(int i = 0; i < sor; i++){
  18. mtx[i] = (double*)malloc(sizeof(double) * oszlop); //lefoglalunk az "oszlop" darab, double típusú tagok számára memóriaterületet
  19. }
  20. return mtx;
  21. }
  22.  
  23. void mtx_megjelenit(double** mtx, int sor, int oszlop) { //ahány dimenzios cucclit akarunk kiiratni, annyi for ciklus van egymasba agyazva
  24. for(int i=0; i<sor; i++) {
  25. for(int j=0; j<oszlop; j++) {
  26. printf("%.2f ", mtx[i][j]);
  27. }
  28. printf("\n");
  29. }
  30. }
  31.  
  32. double szorzatosszeg(double** mtx0, double** mtx1, int sor, int oszlop) { //A szorzatoosszeg csillag nélküli, mert nem mtx a visszatérési érték, hanem egyetlen egy szám
  33. double osszeg= 0.0;
  34. for(int i=0; i<sor; i++) {
  35. for(int j=0; j<oszlop; j++) {
  36. osszeg += mtx0[i][j] * mtx1[i][j];
  37. }
  38. }
  39. return osszeg;
  40. }
  41.  
  42. /*double nyom(double** mtx, int oldal) { //Ezt csak négyzetes mátrixra számoljuk, ezért elég 1db int. (itt elég 1 for ciklus, hiaba 2 dimenzios)
  43. double osszeg = 0.0;
  44. for(int i=0; i<oldal; i++) {
  45. osszeg += mtx[i][i];
  46. }
  47. return osszeg;
  48. }*/
  49.  
  50. double nyom(double** mtx, int oldal) { // megoldható 2 egybe agyazott for ciklussal is
  51. double osszeg = 0.0;
  52. for(int i=0; i<oldal; i++) {
  53. for(int j=0; j<oldal; j++) {
  54. if(i == j) {
  55. osszeg += mtx[i][j];
  56. }
  57. }
  58. }
  59. return osszeg;
  60. }
  61.  
  62. int main(void) {
  63. double** mtx0 = mtx_general(2, 2);
  64. double** mtx1 = mtx_general(2, 2);
  65. mtx1[0][0] = -1;
  66. mtx1[1][1] = 8;
  67. mtx0[0][0] = 10;
  68. mtx0[1][1] = 3;
  69. printf("Az elso matrix: \n");
  70. mtx_megjelenit(mtx0, 2, 2);
  71. printf("\nA masodik matrix:\n");
  72. mtx_megjelenit(mtx1, 2, 2);
  73. printf("\nA szorzatosszeguk:\n");
  74. printf("%.2f\n", szorzatosszeg(mtx0, mtx1, 2, 2));
  75. printf("\nA matrixok nyoma\n");
  76. printf("Az elsonek: %.2f\n", nyom(mtx0, 2));
  77. printf("A masodiknak: %.2f\n", nyom(mtx1, 2));
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement