Skocz do zawartości

kroll44

Użytkownik
  • Postów

    3
  • Dołączył

  • Ostatnia wizyta

Osiągnięcia kroll44

Newbie

Newbie (1/14)

0

Reputacja

  1. 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????
  2. OK, już zaczynam to trybić, dzięki
  3. Witam wszystkich, to mój pierwszy post więc od razu chciałbym przeprosić jeśli złamię jakiś regulamin forum i prosze o wyrozumialość.Dopiero od 2 tygodni zacząłem wogóle programować więc jestem na poziomie BAAARRDZO średnim. A więc mój problem wygląda nasępująco.Napisalem program za pomocą funkcji w dev-c++, który operuje na macierzach , a mianowicie dodaje je i odejmuje, pracuje na 4 funkcjach: -wypelnij_tablice wpisuje dane -wydruk wypisuje komórki macierzy na ekran -dodaje -odejmuje #include <iostream.h> #include <stdlib.h> int wypelnij_tablice(int tab[100][100],unsigned lw,unsigned lk) { unsigned i,j; for(i=0;i<lw;i++) { for(j=0;j<lk;j++) { cout<<"["<<i<<"]["<<j<<"] = "; cin>>tab[j]; } } return(tab[j]); } int wydruk(int tab[100][100],unsigned lw,unsigned lk) { unsigned i,j; for(i=0;i<lw;i++) { for(j=0;j<lk;j++) { cout<<" "<<tab[j]; } cout<<"\n"; } return(tab[j]); } int dodaje(int t[100][100],int t2[100][100],int t3[100][100],unsigned lw1,unsigned lw2,unsigned lk1,unsigned lk2) { unsigned i,j; if(lw1==lw2 && lk1==lk2) { for(i=0;i<lw1;i++) { for(j=0;j<lk1;j++) { t3[j]=t[j]+t2[j]; } } } else { cout<<"Podaj inne dane"<<endl; } return(t3[j]); } int odejmuje(int t[100][100],int t2[100][100],int t3[100][100],unsigned lw1,unsigned lw2,unsigned lk1,unsigned lk2) { unsigned i,j; if(lw1==lw2 && lk1==lk2) { for(i=0;i<lw1;i++) { for(j=0;j<lk1;j++) { t3[j]=t[j]-t2[j]; } } } else { cout<<"Podaj inne dane"<<endl; } return(t3[j]); } int main() { int A[100][100],B[100][100],C[100][100]; unsigned i,j,a,b,rozmiar1A,rozmiar2A,rozmiar1B,rozmiar2B; cout<<" WYPELNIANIE PIERWSZEJ MACIERZY"<<endl; cout<<"Podaj ilosc wierszy pierwszej macierzy"<<endl; cin>>rozmiar1A; cout<<"Podaj ilosc kolumn pierwszej macierzy"<<endl; cin>>rozmiar2A; wypelnij_tablice(A,rozmiar1A,rozmiar2A); wydruk(A,rozmiar1A,rozmiar2A); cout<<""<<endl; cout<<" WYPELNIANIE DRUGIEJ MACIERZY"<<endl; cout<<"Podaj ilosc wierszy drugiej macierzy"<<endl; cin>>rozmiar1B; cout<<"Podaj ilosc kolumn drugiej macierzy"<<endl; cin>>rozmiar2B; wypelnij_tablice(B,rozmiar1B,rozmiar2B); wydruk(B,rozmiar1B,rozmiar2B); cout<<" SUMOWANIE"<<endl; dodaje(A,B,C,rozmiar1A,rozmiar1B,rozmiar2A,rozmiar2B); wydruk(C,rozmiar1A,rozmiar2B); cout<<" ODEJMOWANIE"<<endl; odejmuje(A,B,C,rozmiar1A,rozmiar1B,rozmiar2A,rozmiar2B); wydruk(C,rozmiar1A,rozmiar2B); system("PAUSE"); return 0; } Czytałem jednak że jest optymalniejsza 'wersja' przekazywania tablic funkcjom, a mianowice za pomocą WSKAŹNIKÓW. Przeszukiwalem różne kursy internetowe w poszukiwaniu wiadomości o wskaźnikach ale jest to zwykle tylko jakaś pusta(jak dla mnie) teoria, dlatego prosiłbym o jakiś konstruktywne wskazówki dotyczące na przykład 'przetłumaczenia' funkcji WYPEŁNIJ_ TABLICE na funkcje wskaźnikową. Najlepiej jeśli to oczywiście możliwe prosiłbym o napisanie tej funkcji za pomocą wskaźników. Aha, i mam jeszcze jedno pytania:czy ten kod napisany przeze mnie (mimo tego że nie jest na wskaźnikach) będzie się kompilowac na innych kompilatorach? Z góry dziekuje za pomoc i...wyrozumialość. Pozdrawiam wszystkich Kuba PS Prosze o uwagi dotyczące posta(konstruktywnie krytyczne mile widziane), wiem że jest za długi i mój język też malo tachniczny, ale pracuje nad tym...
×
×
  • Dodaj nową pozycję...