#include <stdio.h>
int blackjack_hand_value(char card1, char card2) {
/**
* Calculate the point total of a two-card blackjack hand.
*
* Parameters:
* - card1: The first card in the hand ('2'-'9', 'T', 'K', 'Q', 'J', 'A').
* - card2: The second card in the hand ('2'-'9', 'T', 'K', 'Q', 'J', 'A').
*
* Returns:
* - int: The point total of the hand.
* - -1: If invalid input is provided.
*/
// Helper function to get the value of a single card
int get_card_value(char card) {
// Convert to uppercase for consistency
if (card >= '2' && card <= '9') {
return card - '0'; // Convert char '2'-'9' to integer 2-9
} else if (card == 'T' || card == 'K' || card == 'Q' || card == 'J') {
return 10; // Face cards are worth 10 points
} else if (card == 'A') {
return 11; // Aces are worth 11 points by default
} else {
return -1; // Invalid card
}
}
// Get the values of the two cards
int value1 = get_card_value(card1);
int value2 = get_card_value(card2);
int total;
// Check for invalid input
if (value1 == -1 || value2 == -1)
{
return -1; // Return -1 to indicate an error
}
// Adjust for multiple aces (if both cards are aces)
if (value1 == 'A' || 'a' && value2 == 'A' || 'a')
{
total = 12; // One ace is worth 11, the other is worth 1
}
// Calculate the total value of the hand
total = value1 + value2;
return total;
}
int main() {
// Example usage
char card1, card2;
printf("Enter the first card (2-9, T, K, Q, J, A): ");
printf("Enter the second card (2-9, T, K, Q, J, A): ");
int total = blackjack_hand_value(card1, card2);
if (total == -1) {
printf("Invalid card input. Please enter valid cards.\n"); } else {
printf("The total value of the hand is: %d\n", total
); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmludCBibGFja2phY2tfaGFuZF92YWx1ZShjaGFyIGNhcmQxLCBjaGFyIGNhcmQyKSB7CiAgICAvKioKICAgICAqIENhbGN1bGF0ZSB0aGUgcG9pbnQgdG90YWwgb2YgYSB0d28tY2FyZCBibGFja2phY2sgaGFuZC4KICAgICAqCiAgICAgKiBQYXJhbWV0ZXJzOgogICAgICogLSBjYXJkMTogVGhlIGZpcnN0IGNhcmQgaW4gdGhlIGhhbmQgKCcyJy0nOScsICdUJywgJ0snLCAnUScsICdKJywgJ0EnKS4KICAgICAqIC0gY2FyZDI6IFRoZSBzZWNvbmQgY2FyZCBpbiB0aGUgaGFuZCAoJzInLSc5JywgJ1QnLCAnSycsICdRJywgJ0onLCAnQScpLgogICAgICoKICAgICAqIFJldHVybnM6CiAgICAgKiAtIGludDogVGhlIHBvaW50IHRvdGFsIG9mIHRoZSBoYW5kLgogICAgICogLSAtMTogSWYgaW52YWxpZCBpbnB1dCBpcyBwcm92aWRlZC4KICAgICAqLwoKICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIHZhbHVlIG9mIGEgc2luZ2xlIGNhcmQKICAgIGludCBnZXRfY2FyZF92YWx1ZShjaGFyIGNhcmQpIHsKLy8gQ29udmVydCB0byB1cHBlcmNhc2UgZm9yIGNvbnNpc3RlbmN5CiAgICAgICAgaWYgKGNhcmQgPj0gJzInICYmIGNhcmQgPD0gJzknKSB7CiAgICAgICAgICAgIHJldHVybiBjYXJkIC0gJzAnOyAvLyBDb252ZXJ0IGNoYXIgJzInLSc5JyB0byBpbnRlZ2VyIDItOQogICAgICAgIH0gZWxzZSBpZiAoY2FyZCA9PSAnVCcgfHwgY2FyZCA9PSAnSycgfHwgY2FyZCA9PSAnUScgfHwgY2FyZCA9PSAnSicpIHsKICAgICAgICAgICAgcmV0dXJuIDEwOyAvLyBGYWNlIGNhcmRzIGFyZSB3b3J0aCAxMCBwb2ludHMKICAgICAgICB9IGVsc2UgaWYgKGNhcmQgPT0gJ0EnKSB7CiAgICAgICAgICAgIHJldHVybiAxMTsgLy8gQWNlcyBhcmUgd29ydGggMTEgcG9pbnRzIGJ5IGRlZmF1bHQKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gLTE7IC8vIEludmFsaWQgY2FyZAogICAgICAgIH0KICAgIH0KCiAgICAvLyBHZXQgdGhlIHZhbHVlcyBvZiB0aGUgdHdvIGNhcmRzCiAgICBpbnQgdmFsdWUxID0gZ2V0X2NhcmRfdmFsdWUoY2FyZDEpOwogICAgaW50IHZhbHVlMiA9IGdldF9jYXJkX3ZhbHVlKGNhcmQyKTsKICAgIGludCB0b3RhbDsKCiAgICAvLyBDaGVjayBmb3IgaW52YWxpZCBpbnB1dAogICAgaWYgKHZhbHVlMSA9PSAtMSB8fCB2YWx1ZTIgPT0gLTEpIAogICAgewogICAgICAgIHJldHVybiAtMTsgLy8gUmV0dXJuIC0xIHRvIGluZGljYXRlIGFuIGVycm9yCiAgICB9CgogICAgLy8gQWRqdXN0IGZvciBtdWx0aXBsZSBhY2VzIChpZiBib3RoIGNhcmRzIGFyZSBhY2VzKQogICAgaWYgKHZhbHVlMSA9PSAnQScgfHwgJ2EnICYmIHZhbHVlMiA9PSAnQScgfHwgJ2EnKSAKICAgIHsKICAgICAgICB0b3RhbCA9IDEyOyAvLyBPbmUgYWNlIGlzIHdvcnRoIDExLCB0aGUgb3RoZXIgaXMgd29ydGggMQogICAgfQogICAgCiAgICAvLyBDYWxjdWxhdGUgdGhlIHRvdGFsIHZhbHVlIG9mIHRoZSBoYW5kCiAgICB0b3RhbCA9IHZhbHVlMSArIHZhbHVlMjsKCiAgICByZXR1cm4gdG90YWw7Cn0KCmludCBtYWluKCkgewogICAgLy8gRXhhbXBsZSB1c2FnZQogICAgY2hhciBjYXJkMSwgY2FyZDI7CgogICAgcHJpbnRmKCJFbnRlciB0aGUgZmlyc3QgY2FyZCAoMi05LCBULCBLLCBRLCBKLCBBKTogIik7CiAgICBzY2FuZigiICVjIiwgJmNhcmQxKTsKCiAgICBwcmludGYoIkVudGVyIHRoZSBzZWNvbmQgY2FyZCAoMi05LCBULCBLLCBRLCBKLCBBKTogIik7CiAgICBzY2FuZigiICVjIiwgJmNhcmQyKTsKCiAgICBpbnQgdG90YWwgPSBibGFja2phY2tfaGFuZF92YWx1ZShjYXJkMSwgY2FyZDIpOwoKICAgIGlmICh0b3RhbCA9PSAtMSkgewogICAgICAgIHByaW50ZigiSW52YWxpZCBjYXJkIGlucHV0LiBQbGVhc2UgZW50ZXIgdmFsaWQgY2FyZHMuXG4iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgcHJpbnRmKCJUaGUgdG90YWwgdmFsdWUgb2YgdGhlIGhhbmQgaXM6ICVkXG4iLCB0b3RhbCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=