E' una moltiplicazione fra matrici fondamentalmente:
#include "prodotto.h"
void leggi_file(char* file_name, struct matrice* dati) {
int i; int j; FILE* fd;
fd = fopen(file_name, "r");
fscanf(fd, "%d", &dati->rig);
fscanf(fd, "%d", &dati->col);
dati->N = (float*)malloc(sizeof(float) * dati->rig * dati->col);
for (i = 0; i < dati->rig; i++)
for (j = 0; j < dati->col; j++)
{
{
fscanf(fd, "%f", &dati->N[i * dati->col + j]);
}
}
fclose(fd);
}
void stampa_valorisufile(char* file_name, struct matrice* dati) {
FILE* fd; int i; int j;
fd = fopen(file_name, "w");
for (i = 0; i < dati->rig; i++) {
for (j = 0; j < dati->col; j++) {
fprintf(fd, "%f\t", dati->N[i * dati->col + j]);
}
fprintf(fd, "\n");
}
fclose(fd);
}
float prodotto(struct matrice* a, struct matrice* b, struct matrice* c, int gamma) {
int i; int j; int k;
c>rig = a->rig;
c->col = b->col;
c->N = (float*)malloc(sizeof(float) * c->rig * c->col);
for (i = 0; i < c->rig; i++) {
for (j = 0; j < c->col; j++) {
c->N[i * c->col + j] = a->N[i * a->col] * b->N[j];
for (k = 1; k < a->col; k++) {
c->N[i * c->col + j] = c->N[i * c->col + j] + a->N[i * a->col + k] * b->N[k * b->col + j];
}
}
}
return 0;
}
int main()
{
struct matrice {
int rig;
int col;
float* N;
};
struct matrice a, b, c;
char filename_A[] = "matriceA.txt";
char filename_B[] = "matriceB.txt";
leggi_file(filename_A, &a);
leggi_file(filename_B, &b);
prodotto(&a, &b, &c);
}
Ho provato pure a disinstallare e reinstallare visual studio ma senza successo