ďťż

Ładny brzuch

Witam!
Mam taki problem: czy jest możliwość sprawdzenia w funcji rozmiaru tablicy, którą przesłałem przez wskaźnik? Jeżeli tak to to w jaki sposób?

z góry dzięki za info




Witam!
Mam taki problem: czy jest możliwość sprawdzenia w funcji rozmiaru tablicy, którą przesłałem przez wskaźnik? Jeżeli tak to to w jaki sposób?

z góry dzięki za info


Rozmiaru tj. ilości elementów w tablicy czy rozmiaru zajmowanego w pamięci przez tablicę?


Rozmiaru tj. ilości elementów w tablicy czy rozmiaru zajmowanego w pamięci przez tablicę?

W sumie to obojętne. Jedno lub drugie by mi wystarczyło.

Przez wskaźnik nie ma takiej możlwiości (może on pokazywać tylko na jeden element tablicy)
Ale jeśli chcesz sobie sprawdzić ilość zajmowanej pamięci przez tablicę służy do tego funkcja sizeof(naza_tablicy)




Przez wskaźnik nie ma takiej możlwiości (może on pokazywać tylko na jeden element tablicy)
Ale jeśli chcesz sobie sprawdzić ilość zajmowanej pamięci przez tablicę służy do tego funkcja sizeof(naza_tablicy)


ehh, no to cała koncepcja mojego programu padła :-(

A może ktoś podpowiedziaby mi coś jak utworzyć klasę reprezentującą funkcję wymierną jednej zmiennej. Klasa powinna mieć konstruktor inicjalizujący obiekt dowolną funkcję wymierną. Ja wymyśliłem coś takiego:

#include <iostream> using namespace std; class binomial { public: int stopien; double* wielomian; binomial(int st, double* tab) { stopien=st; wielomian = new double[st]; double* wiel; wiel=wielomian; for(int i=0;i<st;i++) { *wiel=tab[i]; wiel++; } } }; ostream& operator<< (ostream & ekran, binomial & bi) { double* wiel = bi.wielomian; for(int i=0; i<bi.stopien; i++) { if(*wiel != 0) { if(i!=0) cout << " + "; cout << *(wiel) << "x^" <<bi.stopien - i -1; } wiel++; } cout <<endl; } int main() { double tab[] = {1.2, 34.5, 0, 0 ,8.1, 9.98, 12}; int ile = sizeof(tab)/sizeof(double); binomial wiel(ile,tab); cout <<wiel; system("PAUSE"); }

Klasa powinna mieć przeładowany operator >>. Ma ktoś jakiś pomysł, a może wogóle trzeba przerobić program? Nie wiem, czy sama idea roziązania problemu jest dobra?
Użytkownik mirt edytował ten post 12 październik 2006, 21:05

Klasa powinna mieć konstruktor inicjalizujący obiekt dowolną funkcję wymierną.
No tak... W C++ nie ma typu reprezentującego funkcję wymierną. Ale oczywiście można stworzyć taki "typ" jako klasę. I wtedy konstruktor inicjalizujący obiekt funkcją wymierną będzie jako argument przyjmował... obiekt tej klasy. A więc w rzeczywistości to będzie konstruktor kopiujący :P W tym momencie sprawa się zapętliła. Po prostu musisz stworzyć taką klasę. Żeby zdefiniować funkcję wymierną musisz mieć dla każdego składnika wykładnik i współczynnik. Ponieważ tych składników jest więcej dobrze by było mić to w tablicy. I teraz przechodząc do sedna: ja to widzę tak, że tworzysz klasę, która zawiera w sobie tablicę obiektów, lub struktur reprezentujących wykładniki i współczynniki. Nic nowego w sumie... Ale problem pewnie jest w tym jak określić ile tych składników jest. I wcale nie musi to być stopień wielomianu, bo możesz mieć np. 1/x^3. Funkcja jest stopnia trzeciego, ale ma jeden składnik. Więc masz dwa wyjścia: stworzenie klasy, która reprezentuje taką tablicę, i do tego zawiera długość tej tablicy, lub użycie gotowych szablonów. Zwykle zaleca się to drugie rozwiązanie. Jeżeli piszesz to po prostu w C++ (a nie np. w C++Builder), to oczywiste wydaje się użycie STL. A dokładnie może to być klasa vector sprecyzowana tak, żeby zawierała struktury (lub obiekty) składające się ze współczynnika i wykładnika. I chyba tak to powinieneś zrobić...

Wielki dzieki za pomoc, teraz już powinno jakoś pójść.

A ja mam pytanie związane z przekazaniem wielości tablicy do funkcji.

Deklaruję tablice
int dane[8][8];

Następnie są w nią wczytywane dane i jeszcze przed main w funkcji mam zadeklarowaną tablicę

1) int wektor(int wsp[8][8],int i)

Odwołując się z programu do funkcji piszę:

2) wektor(dane,i);

I teraz jak wpisać poprawnie 1) i 2) aby przekazywać całą talicę do funkcji i móc z niej skorzystać??
Bo niestety przy takim zapisie wywala mi błąd.

Bardzo proszę o pomoc.

Masz tablicę 2-wymiarową czyli możesz napisać tak:
int wektor(int wsp[][8], int i);

ps. ale tak jak napisałeś też powinno działać, może masz gdzie indziej problem.
Użytkownik reVis edytował ten post 18 październik 2006, 19:52
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •