lukas__87 Temat założony przez niniejszego użytkownika |
Mnożenie macierzy HELP Ktoś pomoże?? » 2011-03-27 22:22:23 mam problem ze stworzeniem algorytmu dla obliczania macierzy, na początku chce wprowadzić liczbę wierszy i kolumn a następnie wartości macierzy, tak samo z drugą macierzą, no i oczywiście warunek dla mnożenia czyli liczba wierszy musi być równa liczbie kolumn, no i tutaj pętla jeśli się zgadza to mnożymy a jeśli nie wyrzuca i wyświetla napis nie można podzielić,
niby proste, łatwo napisać jakby się to zrobiło ale jako osoba początkująca proszę o jakikolwiek kod pomocny dla mojego przypadku.
#include "stdafx.h"
int main( int argc, char * argv[] ) { int w, k, i, j, x, y, z; int tab_a, tab_b, tab_c; printf( "MNOZENIE MACIERZY\nPamietaj, ze A[x,y] x B[y,z] = C[x,z]\n" ); printf( "Podaj liczbe wierszy A: " ); scanf( "%d", & x ); printf( "Podaj liczbe kolumn A: " ); scanf( "%d", & y ); int tab_a[ x ][ y ]; printf( "Podaj liczbe kolumn B: " ); scanf( "%d", & z ); int tab_b[ y ][ z ]; int tab_c[ x ][ z ]; printf( "Wprowadz wartosci do macierzy A wierszami:\n" ); for( i = 0; i < x; i++ ) { printf( "Wiersz %d\n", i + 1 ); for( j = 0; j < y; j++ ) scanf( "%d", & tab_a[ x ][ y ] ); } printf( "Wprowadz wartosci do macierzy B wierszami:\n" ); for( i = 0; i < y; i++ ) { printf( "Wiersz %d\n", i + 1 ); for( j = 0; j < z; j++ ) scanf( "%d", & tab_b[ y ][ z ] ); } for( i = 0; i < x; i++ ) for( j = 0; j < z; j++ ) tab_c[ i ][ j ] = 0; for( i = 0; i < x; i++ ) for( j = 0; j < z; j++ ) { for( k = 0; k < y; k++ ) tab_c[ i ][ j ] =( tab_a[ i ][ k ] * tab_b[ k ][ j ] ) + tab_c[ i ][ j ]; } for( i = 0; i < x; i++ ) for( j = 0; j < z; j++ ) printf( "%d %d = %d\n", i + 1, j + 1, tab_c[ i ][ j ] ); getchar(); return 0; }
zdecydowanie wydaje mi się że jest zła deklaracja tabeli, i brakuje pętli, pomocy !!! |
|
ison |
» 2011-03-27 23:02:13 kod umieść w [cpp][/cpp] taka konstrukcja jest niedozwolona jeśli x,y nie są stałe dlaczego najpierw deklarujesz pojedyncze zmienne a potem tablice o takich samych nazwach? |
|
lukas__87 Temat założony przez niniejszego użytkownika |
?? » 2011-03-27 23:06:23 coś dokładniej?? bo jestem mało kumaty w te klocki |
|
ison |
» 2011-03-27 23:08:04 jeśli nie chcesz bawić się w dynamiczną alokację pamięci to ustal sobie stały maksymalny rozmiar tablic np. nie możesz deklarować niedynamicznych tablic o nieznanym przed kompilacją rozmiarze tak jak to zrobiłeś w swoim kodzie zaraz przepatrzę resztę kodu |
|
lukas__87 Temat założony przez niniejszego użytkownika |
?? » 2011-03-27 23:12:00 chcę aby wielkość tablicy była wyznaczana przez liczbę wprowadzoną klawiaturą , |
|
McAffey |
» 2011-03-27 23:16:24 Jeśli nie znasz dynamicznych tablic to tego nie osiągniesz, a wielkość takiej tablicy musisz mieć zadeklarowaną tak jak napisał ison. |
|
ison |
» 2011-03-27 23:19:20 zaraz poprawię kod to zobaczysz o co mi chodziło, zwyczajnie deklarujesz sobie dużą tablicę a używasz tylko tych pól których chcesz, zabawa w dynamiczne tablice nie ma sensu czyżby przyzwyczajenie z pascala? ;) zmienne do iteracji lepiej deklarować w forze for( int i = 0; i < x; i++ )
|
|
lukas__87 Temat założony przez niniejszego użytkownika |
?? » 2011-03-27 23:19:23 moge zadeklarować wartość tablicy w taki sposób tab_a[x=max][y=max]?? |
|
« 1 » 2 |