Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 7.12.2010 Ostrzeżenie: (0%)
|
Witam nie programuję jeszcze jakoś wybitnie ale w szkole jako tako wyróżniam się i postanowiłem napisać coś trudniejszego - Pokera ale to tak mało ważne.
zastanawiam się jak wysłać z funkcji głównej całą tablicę z danymi. Oto mój kod. Funkcja sprawdz. : int sprawdz(int karta, int kolor, int lista_kart[], int lista_kolorow[]) { for(int i=1;i<10;i++) { if(karta== lista_kart[i] && kolor ==lista_kolorow[i]) { return 1; } else { return 0; } } } fragment funkcji głównej : int gracz1_karty[3]; int gracz1_kolor[3]; int karty[10]; int kolor_karty[10]; (...) do { gracz1_karty[i]=losuj_karte(); gracz1_kolor[i]=losuj_kolor(); int sprawdzenie; sprawdzenie=sprawdz(gracz1_karty[i],gracz1_kolor[i],karty,kolor_karty); (...) }while(sprawdzanie==0); teraz jak przekacać całą tablice "karty" i całą tablicy "kolor_karty" ? |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 0 Dołączył: 8.06.2005 Ostrzeżenie: (0%)
|
|
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 7.12.2010 Ostrzeżenie: (0%)
|
tak słyszałem ale wyleciały mi z głowy. Thx zobaczymy co teraz wyjdzie
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 332 Pomógł: 294 Dołączył: 12.10.2008 Skąd: Olkusz Ostrzeżenie: (0%)
|
musisz przekazać początek i koniec tablicy (koniec jest za tablicą - tak się przyjęło w c++), więc wskaźnik początkowy i końcowy, lub wskaźnik na tablicę i liczbę wskazującą na jej wielkość... w C++11 masz jeszcze do dyspozycji std::begin i std::end które działa z tablicami oraz kontenerami...
zapominając o powyższym, to mógłbyś sobie ułatwić sprawę nie zagłębiając się w język i skorzystać z któregoś z kontenerów, np. std::vector... a jeśli piszesz grę to interfejs graficzny najłatwiej pisze się w Qt, w nim dodatkowo wszystko masz zdefiniowane, nawet własne kontenery itd... |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 4 Dołączył: 10.08.2009 Ostrzeżenie: (0%)
|
Skorzystaj z std::vector, tak jak polecił Ci zegarek84. Wyjdzie Ci to na dobre.
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 Ostrzeżenie: (0%)
|
w C/C++ tablica jest wskaznikiem, wlasciwie jest to wskaznik na pierwszy (zerowy) element tablicy, dlatego na "tablicy" dziala arytmetyka wskaznikow, sposob ktory uzylez zadziala, np:
Kod #include <iostream> #define N 10 using namespace std; void dupa(int tab[], int rozmiar) { for (int i = 0; i < rozmiar; i++) { tab[i] = i; } } int main() { int tablica[N]; dupa(tablica, N); for (int i = 0; i < N; i++) { cout << tablica[i] << endl; } return 0; } tablica to tylko wskaznik i nie ma rozmiaru, ten musisz trzymac osobno, dlatego wygodnie jest uzywac kontenerow z STL w tym std::vector, istnieje jeszcze jeden sposob przekazania tablicy do funkcji ktory umozliwia modyfikacje tablicy poprzez "wyluskiwanie": Kod void dupa(int **ptr) { int *tablica = *ptr; } ///// int tablica[100]; dupa(&tablica); tego sie uzywa np: jak chcesz zmienic rozmiar, usunanc tablice itp Ten post edytował cepa 16.11.2012, 19:27:00 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 10 Dołączył: 17.03.2012 Ostrzeżenie: (0%)
|
w C/C++ tablica jest wskaznikiem, wlasciwie jest to wskaznik na pierwszy (zerowy) element tablicy, dlatego na "tablicy" dziala arytmetyka wskaznikow, Prawie. Nazwa tablicy jako r-value jest domyślnie rzutowana na wskaźnik do pierwszego elementu tablicy. Nie zmienia to faktu, ze to rozwiązanie zadziała. |
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 17:34 |