Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tasowanie kart

Ostatnio zmodyfikowano 2015-10-15 16:26
Autor Wiadomość
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.

C/C++
#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;
}
P-138586
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



P-138591
C-Objective
» 2015-10-15 16:26:02
C/C++
#include <stdlib.h>
#define ILOSC_KART 64 /*Chyba 64 karty w talii (?)*/
char * karty[ ILOSC_KART ] = { }; /*Tu wpychasz karty np WaletPik.*/
char * potasowaneKarty[ ILOSC_KART ];
int wylosowane[ ILOSC_KART ];
void tasuj() {
    int tmp = 0;
    for( int i = 0; i < ILOSC_KART; i++ ) {
        /*Tutaj sobie sprawdzasz czy juz wylosowana ta karte. ID karty wylosowanej jest w wylosowane. Talia potasowana w potasowaneKarty.*/
        tmp = rand() % 64;
        potasowaneKarty[ i ] = karty[ tmp ];
        wylosowane[ i ] = tmp;
    }
}
/*
* w GCC kompilujesz z -std=c99
*/
P-138602
« 1 »
  Strona 1 z 1