Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ - Funkcja zwracająca całą tablicę

luk1401 27 Sty 2013 14:29 2757 13
  • #1 27 Sty 2013 14:29
    luk1401
    Poziom 16  

    Witam.

    Mam do zrobienia program o treści:

    Cytat:
    Funkcja otrzymuje dwie tablice X,Y o n liczbach i zwraca trzecią tablice Z. Zi=Xi + Yi


    Niby banalne, a nie umiem zrobić, żeby funkcja zwracała całą tablicę. Funkcja zwraca mi jedynie jej pierwszy element.

    Tradycyjnie za gotowe rozwiązanie 100pkt.

    Z góry dzięki :)

    0 13
  • #2 27 Sty 2013 14:38
    Mardok2
    Poziom 14  

    Zrobiłeś to na wskaźlinikach ? Funkcja przyjmuje dwa wskaźniki do tablic i zwraca trzeci do tablicy wynikowej .Jak już masz wskaźnik do tablicy wynikowej to go inkrementujesz i wpisujesz wartość np. w mainie do kolejnej tablicy . :) A i pamiętaj tab[i] gdzie tab to wskaźnik :)

    0
  • #3 27 Sty 2013 15:01
    luk1401
    Poziom 16  

    A możesz to pokazać na jakimś przykładzie kodu, bo nie bardzo rozumiem jak to zrobić.

    0
  • #4 27 Sty 2013 16:31
    NaglyAtakStolca
    Poziom 2  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 27 Sty 2013 17:10
    yahuza
    Poziom 11  

    Poprawne wywołanie funkcji dodaj_tablice w tym przypadku powinno być:

    Code:

    dodaj_tablice(X,Y,Z);;

    z tego powodu, iż nazwa tablicy jest sama w sobie wskaźnikiem na pierwszy jej element.

    0
  • #6 27 Sty 2013 17:46
    miszcz310
    Poziom 19  

    @yahuza
    Z tego co ja wiem oba zapisy są dozwolone, ale takie wywoływanie jak to przedstawiłeś jest częściej stosowane ze względu na krótszy zapis, ale oba są dozwolone (przynajmniej w C).

    0
  • #7 27 Sty 2013 18:24
    kisielos12
    Poziom 26  

    Od siebie dodam iż zapis

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    można zapisać równie dobrze w prostszy sposób
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Tutaj może wydawać się to niepotrzebne ale w większych projektach na pewno łatwiej będzie autorowi spojrzeć na kod.

    Pozdrawiam

    0
  • #8 27 Sty 2013 18:25
    luk1401
    Poziom 16  

    Wywala błąd:

    Cytat:
    [Error] cannot convert 'int (*)[10]' to 'int*' for argument '1' to 'void dodaj_tablice(int*, int*, int*)'

    0
  • #9 27 Sty 2013 18:34
    kisielos12
    Poziom 26  

    zmień

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    na
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    0
  • #10 27 Sty 2013 18:40
    luk1401
    Poziom 16  

    To samo.

    Cytat:
    [Error] cannot convert 'int (*)[10]' to 'int*' for argument '1' to 'void dodaj_tablice(int*, int*, int*)'

    0
  • #11 27 Sty 2013 18:48
    kisielos12
    Poziom 26  

    Zrobiłem błąd, w poście wyżej masz poprawioną wersję.

    Pozdrawiam

    Dodano po 5 [minuty]:

    Napisałem dla Ciebie 2 wersję tego programu, sprawdziłem działa.

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam ;)

    Dodano po 1 [minuty]:

    Sprawdziłem też wersję kolegi, u mnie działa bez zarzutu :O

    0
  • #12 27 Sty 2013 19:06
    kisielos12
    Poziom 26  

    NaglyAtakStolca napisał:
    może masz jakiś murzyński kompilator sprzed 10 lat (DEV C++)


    Też korzystam z tego "murzyńskiego" kompilatora i wszystko śmiga, Twój kod też.

    Pozdrawiam

    0
  • Pomocny post
    #13 27 Sty 2013 20:13
    pawem1
    Poziom 25  

    @kisielos12 na kompilatorach online http://www.compileonline.com http://codepad.org http://ideone.com twój kod działa jak dam w komentarz //#include <conio.h> i //getch();


    @luk1401 funkcja ma zwracać coś w tym stylu ?
    Korzystałem z tego http://www.tutorialspoint.com/cprogramming/c_return_arrays_from_function.htm

    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    wynik:
    Code:
    0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
    
    1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
    1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 |
    1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 | 19 |

    0
  • #14 27 Sty 2013 20:33
    luk1401
    Poziom 16  

    Problem rozwiązany. Dziękuję za pomoc. Kolega NaglyAtakStolca otrzymał 100pkt, natomiast kolega kisielos12 otrzymał 50pkt.

    0