Programma su 54 carte
Dovrei scrivere un programma in C che mi risolve questo problema.
Ho 54 carte francesi, 13 per ogni seme più 2 jolly. Devo sistemare le carte in modo tale che si verifichi questa situazione. Prendo la prima carta del mazzo e la posiziono a fine del mazzo, la seconda la giro e la metto da parte, la terza la rimetto sotto, e la quarta di nuovo da parte. La sequenza delle carte messe da parte deve essere questa: prima le carte di cuori, dall'asso alla kappa, poi quelle di quadri, fiori, e picche ed infine i 2 jolly. Mi date una mano ?
Ho 54 carte francesi, 13 per ogni seme più 2 jolly. Devo sistemare le carte in modo tale che si verifichi questa situazione. Prendo la prima carta del mazzo e la posiziono a fine del mazzo, la seconda la giro e la metto da parte, la terza la rimetto sotto, e la quarta di nuovo da parte. La sequenza delle carte messe da parte deve essere questa: prima le carte di cuori, dall'asso alla kappa, poi quelle di quadri, fiori, e picche ed infine i 2 jolly. Mi date una mano ?
Risposte
Inizializzerei le carte con codice che vanno da 1 a 54.
Poi simulo la situazione del gioco, e memorizzo in un vettore le 54 carte che vengono estratte.
Il C lo conosco pochissimo, magari ti scrivo qualcosa in Cobol, poi lo riscrivi te in C.
Poi simulo la situazione del gioco, e memorizzo in un vettore le 54 carte che vengono estratte.
Il C lo conosco pochissimo, magari ti scrivo qualcosa in Cobol, poi lo riscrivi te in C.
01 INIZIO SECTION. 02 perform varying ind-dx from 1 by 1 until ind-dx > 54 03 move ind-dx to tcarta (ind-dx) 04 end-perform 05 move 54 to ind-dx 06 move 0 to fase 07 move 0 to ncarte 08 perform varying ind-sx from 1 by 1 until ncarte = 54 09 if fase = 0 add 1 to ind-dx 10 move tcarta (ind-sx) to tcarta (ind-dx) 11 move 1 to fase 12 else display message box tcarta(ind-sx) 14 add 1 to ncarte 15 move 0 to fase 16 end-if 17 end-perform. 18 EX-INIZIO. EXIT SECTION.
Le prime 3 istruzioni (02 03 04) posizionano i primi 54 elementi della tabella con i valori da 1 a 54.
La variabile fase mi serve per alternare nel ciclo le due operazioni:
(0=Metti in fondo al mazzo - Istruzione 10 dopo aver incrementato l'indice destro Istr. 9)
(1=Prendi la carta - La visualizzo Istr.12)
La variabile ncarte mi indica quante carte ho scelto dal mazzo.
Il ciclo termina quando tutte le 54 carte saranno state estratte Istr. 8
Ind-dx è l'indice di destra parte da 54 ed arrivera' a 108
Ind-sx è quello di sinistra che pian piano raggiungera' ind-dx
002 004 006 008 010 012 014 016 018 020
022 024 026 028 030 032 034 036 038 040
042 044 046 048 050 052 054 003 007 011
015 019 023 027 031 035 039 043 047 051
001 009 017 025 033 041 049 005 021 037
053 029 013 045
Questo è il risultato della elab.
L'asso di cuori va in seconda posizione, il 2 in quarta .... etc etc. I due jolly in 13^ e 45^
022 024 026 028 030 032 034 036 038 040
042 044 046 048 050 052 054 003 007 011
015 019 023 027 031 035 039 043 047 051
001 009 017 025 033 041 049 005 021 037
053 029 013 045
Questo è il risultato della elab.
L'asso di cuori va in seconda posizione, il 2 in quarta .... etc etc. I due jolly in 13^ e 45^