ďťż

Ładny brzuch

Mam funkcje która zwraca tablice. Chciałbym tą tablice przekazać do innej funkcji jak to zrobić?
Jak odebrać tą zwracaną tablice i przypisać do innej tablicy?



wszystko opiera się na wskaznikach, zapisz sobie to co zwraca jedna funkcja do odpowiedniej zmiennej wskaznikowej a nastepnie przekarz go do kolejnej funkcji... mam nadziję że dobrze Cię zrozumiałem


Mam funkcje która zwraca tablice.
nawet nie wiedziałem że funkcja może tablicę zwracać, może tą funkcję pokazać?
lepiej na wskaźnikach to zrobić

Chciałbym tą tablice przekazać do innej funkcji jak to zrobić?
przekazywanie tablicy do funkcji:
void fun(char tab[]){ } int main(){ char tablica[3]; fun(tablica); return 0; }

Jak odebrać tą zwracaną tablice i przypisać do innej tablicy?
odebrać?? przepisywanie:
for(int i=0; i<dlugosc_tablicy; i++) tab2[i]=tab1[i];
Użytkownik Kabar edytował ten post 10 listopad 2006, 23:34
To jest mój cały ambityn ;) program dodający dwie macierze:

#define N 3 int dod(int a[N][N], int b[N][N]) { int w,k,c[N][N]; for(w=0;w<N;w++) { for(k=0;k<N;k++) { c[w][k]=a[w][k]+b[w][k]; } } return c; } int wypisz(int p[N][N]) { int w,k; for(w=0;w<N;w++) { for(k=0;k<N;k++) { printf ("%3d",p[w][k]); } printf("\n"); } return 0; } int main(int argc, _TCHAR* argv[]) { int a[N][N]={ {1,2,3}, {1,2,3}, {1,2,3}, }; int b[N][N]={ {1,2,3}, {1,0,3}, {1,0,3}, }; wypisz(a); printf("\n"); wypisz(b); printf("\n"); dod(a,b); getchar();

I teraz musze wynik działania funkcji dod przekazać do funkcji wypisz by ta wyświetliła macierz będąca sumą macierzy A i B.




[code]#define N 3

int dod(int a[N][N], int b[N][N])
{

int w,k,c[N][N];
for(w=0;w<N;w++)
{
for(k=0;k<N;k++)
{
c[w][k]=a[w][k]+b[w][k];
}
}

return c;
}

takie coś się nawet nie skompiluje, Twoja funkcja zwraca pojedynczego integera a nie tablicę. masz 2 wyjścia: albo operować na wskaźnikach do tablic, albo przekazyć tablicę przez referencję i wtedy funkcja nie musi nic zwracać. ja korzystałem z tej drugiej opcji gdy pisałem program operujący na macierzach, ale na wskaźnikach też będzie łatwo :)

Czyli jak to zrobić bo za bardzo nie wiem :(

Przede wszystkim funkcja nie może zwrócić tablicy. Można to jednak zrobić w inny sposób, ustawiając odpowiedni wskaźnik na początek tablicy i ów wskaźnik zwrócić.
Zapewne pomyliło się Tobie z tym, że tablicę można odebrać na dwa sposoby: jako tablicę i jako wskaźnik.
Tutaj masz proponowane roziązanie Twojego problemu.
#include <conio.h> #include <iostream> using namespace std; const int rozmiar = 20; char* odbierz_tablice (char tablica[]); char dane[rozmiar] = {"Jakis tam tekst"}; char *wsk1; char *wsk2; int main(int argc, char *argv[]) { wsk1 = odbierz_tablice(dane); cout << endl; cout << "Wskaznik wsk odebral to: " << wsk1 << endl; wsk2 = odbierz_tablice(wsk1); cout << endl; cout << "Wskaznik wsk2 odebral to: " << wsk2 << endl; getch(); return 0; } char* odbierz_tablice (char tablica[]) { cout << "Czytamy tablice w funkcji [odbierz_tablice]: "; for (int i = 0; i < rozmiar; i++) { cout << tablica[i]; } return tablica; }

Ehh dopiero zauważyłem, że to pod C miało być :P
Ale z zamianą instrukcji nie powinieneś mieć kłopotów :)
Użytkownik KlyYmek edytował ten post 11 listopad 2006, 09:28
Dla tablic jedno wymiarowych działa, ale jak to zrobić dla tablic dwu wymiarowych?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •