T
thefy
Gast
Hallo leute,
ich habe heute versucht eine dynamische Matrixmultiplikation zu programmieren. Eigentlich ist der Code fertig, aber die
Ergebnismatrix ist immer nur zur haelfte richtig berechnet
. Ich finde den fehler einfach nicht. Waere nett wenn einer kurz drueber schauen koennte. Nebenbei: Der Compiler warnt mich immer bzgl. irgendwas, kompiliert aber trotzdem. Was bedeutet das?
Das wird jeweils 2-mal Ausgegeben:
warning: passing argument 1 of ‘gets’ from incompatible pointer type [enabled by default]
note: expected ‘char *’ but argument is of type ‘float (*)[10]’
Ich habe noch nicht viel Erfahrung mit C und erwarte keine fertigen Codes, sondern lediglich kleine Denkanstoesse
Vielen dank schon mal!
ich habe heute versucht eine dynamische Matrixmultiplikation zu programmieren. Eigentlich ist der Code fertig, aber die
Ergebnismatrix ist immer nur zur haelfte richtig berechnet
Das wird jeweils 2-mal Ausgegeben:
warning: passing argument 1 of ‘gets’ from incompatible pointer type [enabled by default]
note: expected ‘char *’ but argument is of type ‘float (*)[10]’
Ich habe noch nicht viel Erfahrung mit C und erwarte keine fertigen Codes, sondern lediglich kleine Denkanstoesse
Vielen dank schon mal!
PHP:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
char input_string[100];
int rows1;
int columns1;
int rows2;
int columns2;
int i, j, k;
float array1 [10][10];
float array2 [10][10];
float result [10][10];
//Matrix Aufbau eingeben
printf ("Anzahl Zeilen 1. Matrix: ");
rows1 = atoi(gets(input_string));
if(rows1>10 || rows1<1) {
printf("Falsche Zeilenanzahl.\n");
return -1;
}
printf ("Anzahl Spalten 1. Matrix: ");
columns1 = atoi(gets(input_string));
if(columns1>10 || columns1<1) {
printf("Falsche Spaltenanzahl.\n");
return -1;
}
printf ("Anzahl Zeilen 2. Matrix: ");
rows2 = atoi(gets(input_string));
if(rows2>10 || rows2<1) {
printf("Falsche Zeilenanzahl.\n");
return -1;
}
printf ("Anzahl Spalten 2. Matrix: ");
columns2 = atoi(gets(input_string));
if(columns2>10 || columns2<1) {
printf("Falsche Spaltenanzahl.\n");
return -1;
}
if(columns1!=rows2) {
printf("Matrix Dimensionen falsch.\n");
return -1;
}
printf("\n");
printf("MATRIX 1:\n");
//Matrix A: Eingabe der Werte
for(i=0; i<rows1; i++) {
for(j=0; j<columns1; j++) {
printf("Element %d,%d Matrix 1 eingeben: ", i,j);
array1[i][j] = atof(gets(array1));
}
printf("\n");
}
printf("Matrix 2:\n");
//Matrix B: Eingabe der Werte
for(j=0; j<rows2; j++) {
for(k=0; k<columns2; k++) {
printf("Element %d,%d Matrix 2 eingeben: ", j,k);
array2[j][k] = atof(gets(array2));
}
printf("\n");
}
//Ergebnis anzeigen
printf("ERGEBNIS: \n");
for(k=0; k<columns2; k++) {
for(i=0; i<rows1; i++) {
float ergebnis = 0;
for(j=0; j<columns1; j++) {
ergebnis+= array1[i][j]*array2[j][k];
}
result[i][k] = ergebnis;
}
}
for(i=0; i<rows1; i++) {
for(k=0; k<columns2; k++) {
printf("%f ", result[i][k]);
}
printf("\n");
}
return 0;
}