smoczun Temat założony przez niniejszego użytkownika |
Przypisanie figur karcianych liczbom w programie sortującym rozdanie » 2013-10-23 11:16:37 Witam! Rozpoczynam właśnie swoja przygodę z c++. Kombinuje jak napisac program losujący 13 kart z talii i sortujęcy rozdanie wg. wagi figur karcianych. Skleciłem kod losujący i sortujący liczby ale nie mam pojecia jak im przypisać figury karciane. Czy można utworzyć tablicę zawierającą wszystkie figury i sortować je na podstawie zajmowanego miejsca(kolejności) w tej tablicy? Jak by ktoś był łaskaw podsunąc jakiś pomysł będę wdzięczny. Oto mój kod: #include <cstdlib> #include <iostream> #include <ctime> using namespace std;
bool czy_byla( int iLiczba, int tab[], int ile ) { if( ile <= 0 ) return false; int i = 0; do { if( tab[ i ] == iLiczba ) return true; i++; } while( i < ile ); return false; }
int wylosuj() { return( rand() % 52 ) + 1; }
void wstawianie( int tab[], int n ) { int i, k, elem; for( i = 1; i < n; i++ ) { elem = tab[ i ]; k = i - 1; while( k >= 0 && tab[ k ] > elem ) { tab[ k + 1 ] = tab[ k ]; k--; } tab[ k + 1 ] = elem; } }
int main() { srand( time( 0 ) ); int rozdane[ 13 ]; int rozdanych = 0; do { int karta = wylosuj(); if( czy_byla( karta, rozdane, rozdanych ) == false ) { rozdane[ rozdanych ] = karta; rozdanych++; } } while( rozdanych < 13 ); cout << "karty przed sortowaniem: " << endl << endl; for( int rozdanych = 0; rozdanych < 13; rozdanych++ ) { cout << rozdane[ rozdanych ] << " "; } wstawianie( rozdane, rozdanych ); cout << endl << "\n" << "karty po sotrowaniu: " << endl << endl; for( int i = 0; i < rozdanych; i++ ) { cout << rozdane[ i ] << " "; } return 0; }
|
|
pekfos |
» 2013-10-23 13:11:13 Można. |
|
smoczun Temat założony przez niniejszego użytkownika |
» 2013-10-23 13:20:21 Ale jak? Jakaś wskazówka? gdzie o tym poczytać? czego szukać? |
|
Hipochondryk |
» 2013-10-23 20:55:32 Z tablicą można to zorbić tak : Robisz tablicę o N indeksach i 2 wierszach ( N= liczba kart) wpisujesz do 2wiersza każdego indeksu wagę danej karty. a do pierwszego przepisujesz nr komórki(ID) Każdemu indeksowi ustalasz rodzaj karty, następnie losujesz X kart do X elementowej tablicy i je tam zapisujesz( ich ID). Następnie zerujesz waggi (lub ustalasz -1) wszystkim kartom których nie wylosowales. W następnym kroku sortujesz całą tablice na podstawie Wag. I masz zrobione :) Nie jest to Najwydajniejszy spodób lecz w oparciu o tablice jest łatwy do zaiplementowania. |
|
Monika90 |
» 2013-10-23 22:27:50 Czy chodzi ci o to jak zamienić numer karty od 1 do 52 na jej nazwę? Np. 1 to As pik, a 25 to 9 karo? Jeśli tak, to masz: void print( int n ) { const char * suit[] = { "trefl", "karo", "kier", "pik" }; const char * rank[] = { "As", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Walet", "Dama", "Król" }; cout << rank[( n - 1 ) % 13 ] << ' ' << suit[( n - 1 ) / 13 ]; }
|
|
smoczun Temat założony przez niniejszego użytkownika |
» 2013-10-24 07:50:02 Dzięki wszystkim za pomoc. @Monia Nie za mocno kumam jak Twój kod działa, nie dobrnąłem jeszcze do wskaźników. Muszę doczytać. Jak byś mi wyjaśniła krok po kroku co ten "kod" robi było by super. |
|
pekfos |
» 2013-10-24 13:42:31 nie dobrnąłem jeszcze do wskaźników. |
Zamiast const char* możesz użyć std::string. |
|
smoczun Temat założony przez niniejszego użytkownika |
» 2013-10-25 09:11:38 @pefkos
Życie mi uratowałeś! Teraz już rozumiem o co biega;) |
|
« 1 » |