Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C/C++ mnożenie macierzy z pliku

Ostatnio zmodyfikowano 2017-12-30 16:00
Autor Wiadomość
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:
C/C++
#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; //s to suma potrzebna do mno¿enia
    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 ;/
P-168217
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ć
P-168219
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.
P-168237
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
P-168238
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
P-168240
mateczek
» 2017-12-30 16:00:53

to wynik:
6
6

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
P-168241
« 1 »
  Strona 1 z 1