Tasowanie kart
Ostatnio zmodyfikowano 2015-10-15 16:26
midaged Temat założony przez niniejszego użytkownika |
Tasowanie kart » 2015-10-14 23:13:49 Mam takie oto zadanie: Karty Limit pamięci: 32 MB Tasujemy talię kart za pomocą następujących operacji: A - przełożenie pierwszej karty z góry na dół stosu B - przełożenie drugiej karty z góry na dół stosu Twoim zadaniem jest obliczyć, która karta będzie na górze n-elementowej talii kart po k operacjach. Karty są ponumerowane kolejno od góry liczbami od 1 do n. Wejście W pierwszym wierszu znajdują się dwie liczby całkowite n i k (int). W drugim wierszu znajduje się k znaków: A lub B, oznaczających rodzaj kolejnych operacji na talii kart. Wyjście Pierwszy i jedyny wiersz wyjścia powinien zawierać jedną liczę całkowitą - numer karty na górze stosu. Moje rozwiązanie podczas którego wyświetla mi komunikat, że program przestał działać z powodu wystąpienia problemu. #include <cstdio>
int main() { int n, k, pom; scanf( "%d %d\n", & n, & k ); int kar[ n ]; for( int x = 0; x <= n - 1; x++ ) kar[ x ] = x + 1; char p[ k + 1 ]; for( int i = 0; i <= k - 1; i++ ) { scanf( "%s", p[ i ] ); if( p[ i ] = 'A' ) { pom = kar[ 0 ]; for( int y = n - 1; y >= 1; y-- ) kar[ y ] = kar[ y - 1 ]; kar[ n - 1 ] = pom; } else { pom = kar[ 1 ]; for( int z = n - 1; z >= 2; z-- ) kar[ z ] = kar[ z - 1 ]; kar[ n - 1 ] = pom; } } printf( "%d", kar[ 0 ] ); return 0; }
|
|
darko202 |
» 2015-10-15 07:34:07 Zacząłbym od zainicjalizowania używanych zmiennych.
bo jeśli domyślnie n == 0 to dalej int kar[ n ]; // czyli kart[0] a potem dalsze konsekwencje tego faktu
|
|
C-Objective |
» 2015-10-15 16:26:02 #include <stdlib.h> #define ILOSC_KART 64 char * karty[ ILOSC_KART ] = { }; char * potasowaneKarty[ ILOSC_KART ]; int wylosowane[ ILOSC_KART ]; void tasuj() { int tmp = 0; for( int i = 0; i < ILOSC_KART; i++ ) { tmp = rand() % 64; potasowaneKarty[ i ] = karty[ tmp ]; wylosowane[ i ] = tmp; } }
|
|
« 1 » |