Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Mátrix nyoma: a mátrix főátlóinak összege
- /*
- ab
- cd
- ef
- gh
- ae + bf + cg + dh
- */
- #include <stdio.h>
- #include <stdlib.h> //malloc miatt kell
- double** mtx_general(int sor, int oszlop) { //2 csillag, mert 2 dimenzios
- 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
- for(int i = 0; i < sor; i++){
- mtx[i] = (double*)malloc(sizeof(double) * oszlop); //lefoglalunk az "oszlop" darab, double típusú tagok számára memóriaterületet
- }
- return mtx;
- }
- void mtx_megjelenit(double** mtx, int sor, int oszlop) { //ahány dimenzios cucclit akarunk kiiratni, annyi for ciklus van egymasba agyazva
- for(int i=0; i<sor; i++) {
- for(int j=0; j<oszlop; j++) {
- printf("%.2f ", mtx[i][j]);
- }
- printf("\n");
- }
- }
- 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
- double osszeg= 0.0;
- for(int i=0; i<sor; i++) {
- for(int j=0; j<oszlop; j++) {
- osszeg += mtx0[i][j] * mtx1[i][j];
- }
- }
- return osszeg;
- }
- /*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)
- double osszeg = 0.0;
- for(int i=0; i<oldal; i++) {
- osszeg += mtx[i][i];
- }
- return osszeg;
- }*/
- double nyom(double** mtx, int oldal) { // megoldható 2 egybe agyazott for ciklussal is
- double osszeg = 0.0;
- for(int i=0; i<oldal; i++) {
- for(int j=0; j<oldal; j++) {
- if(i == j) {
- osszeg += mtx[i][j];
- }
- }
- }
- return osszeg;
- }
- int main(void) {
- double** mtx0 = mtx_general(2, 2);
- double** mtx1 = mtx_general(2, 2);
- mtx1[0][0] = -1;
- mtx1[1][1] = 8;
- mtx0[0][0] = 10;
- mtx0[1][1] = 3;
- printf("Az elso matrix: \n");
- mtx_megjelenit(mtx0, 2, 2);
- printf("\nA masodik matrix:\n");
- mtx_megjelenit(mtx1, 2, 2);
- printf("\nA szorzatosszeguk:\n");
- printf("%.2f\n", szorzatosszeg(mtx0, mtx1, 2, 2));
- printf("\nA matrixok nyoma\n");
- printf("Az elsonek: %.2f\n", nyom(mtx0, 2));
- printf("A masodiknak: %.2f\n", nyom(mtx1, 2));
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement