kroll44 Opublikowano 28 Listopada 2005 Zgłoś Opublikowano 28 Listopada 2005 int mnozenie(int t1[100][100],int t2[100][100],int t3[100][100],unsigned a,unsigned B) { unsigned i,j,k; for(i=0;i<a;i++) { for(j=0;j<b;j++) { t3[j]=0; for(k=0;k<a;k++) { t3[j]= t3[j]+t1[k]*t2[k][j]; } } } return(t3[j]); } gdzie a wiersze, b kolumny Witam, mam lekki problemik z tą funkcją w C, ale zaczne od początku... ...funkcja działa ładnie, pięknie, ale tylko dla macierzy o identycznych wymiarach(wiadomo, że ilość kolumn t1 musi być równa ilości wierszy t2) ale pozostałe parametry macierzy mogą być różne.I tu pojawia się moje pytanie: podejrzewam że sa jakieś myki ktore mnożą wszystkie macierze, ale jak to zrobić? Bardzo prosze o jakieś komentarze dotyczące tego problemu, lub wskazówki jak go podrasować, a może zupełnie zmienic kod? Z góry dzięki, pozdro Kuba PS . Przy cytowniu kodu proszę używać tagów bbcode , , i . JAK SIĘ TO ROBI???? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Sam Sung Opublikowano 28 Listopada 2005 Zgłoś Opublikowano 28 Listopada 2005 Zamiast tablic dwuwymiarowych, możesz używac tablic pozornie jednowymiarowych, i samemu obliczać pozycje elementów o zadanych indeksach. Załóżmy, że macierze przechowujemy wierszami. Alokujemy tablicę o n wierszach i m kolumnach: int *mac1 = (int *) malloc(n * m * sizeof(int)); Odwołanie do elementu w i-tym wierszu i j-tej tablicy: int element = mac1[i * m + j]; Zamiast przekazywać tablice o rozmiarach 100 na 100, trzeba więc przekazywać wskaźniki do tablic (wcześniej oczywiście zaalokowane i zainicjowane), oraz rozmiary tych macierzy. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...