Forum CDRinfo.pl

Forum CDRinfo.pl (https://forum.cdrinfo.pl/)
-   Off topic (https://forum.cdrinfo.pl/f5/)
-   -   C++ tablice (https://forum.cdrinfo.pl/f5/c-tablice-68806/)

misiek767 25.11.2006 23:27

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

pawelblu 26.11.2006 00:27

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.