Matrici

di il
3 risposte

Matrici

Premetto che sto studiando da poco le matrici, quindi mi considero molto inesperto per adesso..
Ho trovato un programma in cui data una matrice si vuole ottenere la sua trasposta..
questo è il file.h
#if !defined MATRIX_H
#define MATRIX_H
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define DIMENSIONE mat ->cols *mat ->rows

struct matrix {
	size_t rows, cols;
	double *data;

};


extern struct matrix *mat_transpose(const struct matrix *mat);



#endif
questo è il file.c
#include "matrix.h"

struct matrix *mat_transpose(const struct matrix *mat){

	struct matrix *ris = malloc(sizeof(struct matrix));
	ris->cols = mat->rows;
	ris->rows = mat->cols;


	double *d = malloc(DIMENSIONE * sizeof(double));
	ris->data = d;

	for (size_t colonna = 0, posizione = 0; posizione < DIMENSIONE; ++colonna){
		for (size_t riga = 0, operando = 0; riga < mat->rows; ++riga, ++posizione){
			d[posizione] = mat->data[colonna + operando];
			operando += mat->cols;
		}
	}
	return ris;

}
questo è il main:
#include "matrix.h"


int main(void){
	double data[] = {
			1, 2, 3,
			4, 5, 6
		};

	struct matrix m = { 2, 3, data };

	struct matrix *matrep = mat_transpose(&m);

	return 0;
	}
Volevo chiedere due cose abbastanza semplici per cercare di capire meglio questo argomento..
-in questo caso è stata utilizzata la tecnica del doppio puntatore, o del singolo puntatore?
-se vorrei visualizzare su schermo la matrice trasposta ottenuta come faccio con la printf?

3 Risposte

  • Re: Matrici

    Matte ha scritto:


    -in questo caso è stata utilizzata la tecnica del doppio puntatore, o del singolo puntatore?
    Come vedi

    double *data;

    è un singolo puntatore.
    -se VOLESSI visualizzare su schermo la matrice trasposta ottenuta ...
    Vedi la parte di codice con le due for ... usa la printf per visualizzare l'elemento d[..]
  • Re: Matrici

    Ma se faccio printf("%d ", d[colonna], d[riga]); mi escono su schermo solo degli zeri... in cosa sbaglio?
  • Re: Matrici

    Ma, come ti ho detto, se segui le for del codice, l'indice è [posizione] che si ottiene in un determinato modo.
Devi accedere o registrarti per scrivere nel forum
3 risposte