kespl Temat założony przez niniejszego użytkownika |
C/C++ mnożenie macierzy z pliku » 2017-12-29 20:35:51 Mam taki kod: #include <stdfix.h> #include <stdlib.h> #include <iostream> int ** Utworz( int a, int b ) { int ** tab; int i, j; tab =( int ** ) malloc( sizeof( int * ) * a ); for( i = 0; i < a; i++ ) { tab[ i ] =( int * ) malloc( sizeof( int ) * b ); } return tab; } void Zwolnij( int ** A, int a ) { for( int i = 0; i < a; i++ ) free( A[ i ] ); free( A ); } int main( int argc, char * argv[] ) { int ** A, ** B, ** C, a, b, c, d, s = 0; FILE * x; x = fopen( "A.txt", "r" ); fscanf( x, "%d%d", & a, & b ); A = Utworz( a, b ); for( int i = 0; i < a; i++ ) { for( int j = 0; j < b; j++ ) { fscanf( x, "%d", & A[ i ][ j ] ); } } FILE * y; y = fopen( "B.txt", "r" ); fscanf( y, "%d%d", & c, & d ); B = Utworz( c, d ); for( int i = 0; i < c; i++ ) { for( int j = 0; j < d; j++ ) { fscanf( y, "%d", & B[ i ][ j ] ); } } C = Utworz( a, d ); for( int i = 0; i < a; i++ ) { for( int j = 0; j < d; j++ ) { for( int k = 0; k < b; k++ ) { s = s + A[ i ][ k ] * B[ k ][ j ]; } C[ i ][ j ] = s; s = 0; } } FILE * z; z = fopen( "C.txt", "w" ); for( int i = 0; i < a; i++ ) { for( int j = 0; j < d; j++ ) fprintf( z, "%d\t", C[ i ][ j ] ); fprintf( z, "\n" ); } fclose( x ); fclose( y ); fclose( z ); Zwolnij( A, a ); Zwolnij( B, c ); Zwolnij( C, a ); printf( "Operacja zakonczona pomyslnie!\n" ); system( "PAUSE" ); return 0; }
I nie wiem co z tym zrobić, żeby to w jaki kolwiek sposób działało, prosiłbym jeśli ktoś coś wie to o napisanie kawałku kodu, a nie samym wytłumaczeniu, bo szczerze jestem w tym zielony i to kod kolegi ;/ |
|
mateczek |
» 2017-12-29 21:05:45 Ten kod to kod w C. na forum kod wklejaj w znaczniki [cpp]tutaj kod[/cpp] Aby działał wystarczy skompilować, stworzyć pliki z macierzami, i uruchomić |
|
kespl Temat założony przez niniejszego użytkownika |
» 2017-12-30 14:10:52 Dzięki, ale i tak nie kumam, czy mógłby ktoś mi pomóc przekonwertować na c++, chodzi mniej więcej o to, żeby czytało z pliku A.txt, gdzie jest zapisane przykładowo 3 3 3 3 3 3 a z pliku B.txt 3 3 3 3 3 3 , wiemy to macierze 2x3 i 3x2, i żeby je pomnożyło i wynik w pliku nowo powstałbym C.txt przykładowo dostałem takie zadanie na studiach a u nas ziomek słabo tłumaczy, jakby ktoś mógł pomóc to byłbym wdzięczny.
|
|
mateczek |
» 2017-12-30 14:31:48 ten kod bez problemu kompiluje się przy pomocy kompilatora c++. Właściwie nic nie trzeba konwertować chodzi mniej więcej o to, żeby czytało z pliku A.txt, gdzie jest zapisane przykładowo 3 3 3 3 3 3 a z pliku B.txt 3 3 3 3 3 3 , wiemy to macierze 2x3 i 3x2, i żeby je pomnożyło i wynik w pliku nowo powstałbym C.txt
|
ten kod który wkleiłeś mniej więcej tak działa Plik "A.txt" 2 3 1 1 1 1 1 1
plik B.txt 3 1 2 2 2
|
|
kespl Temat założony przez niniejszego użytkownika |
» 2017-12-30 14:58:26 Dzięki, działa tylko coś wyniki słabe są :D
126514962 252839049 1554188201 126419529 -998207479 9 252922152 -871704856 126502632
przykładowy plik C.txt, coś w obliczeniach i czy mógłby ktoś sprawdzić edit tamte wyniki były po uzupełnieniu plików 3 3 3 3 3 3
3 3 3 3 3 3
a jak pan napisał A 2 3 1 1 1 1 1 1 B 3 1 2 2 2
to wynik: 6 6 |
|
mateczek |
» 2017-12-30 16:00:53 no wynik prawidłowy w czym problem ?? edit tamte wyniki były po uzupełnieniu plików?? 3 3 3 3 3 3
3 3 3 3 3 3
|
Po uzupełnieniu pliki powinny wyglądać tak Plik A.txt 2 3 3 3 3 3 3 3
plik B.txt 3 2 3 3 3 3 3 3 |
|
« 1 » |