![]() |
C++ tablice
Witam mam do napisania program w ktorym zdefiniuje tablice o rozmiarze MxN Elementy tablicy maja tworzyc macierz z wartosciami tabliczki mnozenia. Nastepnie mam zsumowac wszystkie elementy macierzy adresujac kolejne elementy przy uzyciu wskaznikow. Musze przy tym stworzyc takie funkcje
-napelnij tablice(tablica,rozmiar tablicy) -wyswietl tablice(tablica, rozmiar tablicy) + formatowanie wydruku -sumuj tablice(tablica, rozmiar tablicy)+ metoda wskaznikowa adresowania elementow tablicy Napisalem cos takiego #include <cstdlib> #include <iostream> #include<iomanip> using namespace std; const int M=10,N=10; void fnWypelnij(int Tab[][N],int M){ for (int i=1;i=M;i++){ for(int j=1;j=N;j++){ Tab[i][j]=i*j; }}} void fnWyswietl(int Tab[][N],int M) { for (int i=1;i=M;i++){ for(int j=1;j=M;j++) { cout<<setw(5)<<Tab[i][j];}}} int fnSuma(int Tab[][N],int M){ int suma=0; for (int i=1;i=M;i++){ for(int j=1;j=M;j++){ suma=suma+Tab[i][j]; return(suma);}}} int main() { int tab[M][N]; int suma; fnWypelnij(tab,M); fnWyswietl(tab,M); cout<<"Suma wszystkich wyrazow tej tablicy to"<<fnSuma(tab,M)<<endl; system("PAUSE"); return EXIT_SUCCESS; } No i wszystko wychodzi jak trzeba ale nie wiem jak uzyc w funkcji suma metody wskaznikowego adresowania elementow(dlatego napisalem inaczej).Wie moze ktos jak to napisac uzywajac adresowania z gory dzieki za pomoc |
W C napewno (w C++ pewnie tez) mozna tak:
tab[i] = *(tab + i) (ksiazka mowi ze wskaznik jest inteligentny i sie nie przemnaza przez sizeof(int), ale jakby nie dzialalo, to i pomnoz przez sizeof(int)) W dwuwymiarowych pewnie bedzie: tab[i][j] = *(tab + i * N + j) (jezeli bedzie zle to sprobuj z M, pozamieniaj i z j ... i jw ew. (i * N + j)*sizeof(int)) Ale kompilator przy odpowiednim stopniu wyczulenia powinien conajmniej rzucac warningi, bo tak jest "brzydko". |
Wszystkie czasy w strefie CET. Aktualna godzina: 18:16. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.