CS 102
Notes for Tuesday 5 April
- Meeting 20
- Quiz 6
Pass by reference (the C++ way).
We skipped Quiz 6.
Table of Contents
1 Solution to Blackjack assignment
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int deal_a_card();
int rank_to_score(int rank);
int main5()
{
int c1, c2, c3, score;
srand(time(NULL));
c1 = deal_a_card();
c2 = deal_a_card();
c3 = deal_a_card();
score = rank_to_score (c1)
+ rank_to_score(c2)
+ rank_to_score(c3);
if( (c1 == 1 || c2 == 1 || c3 == 1)
&& score <= 11 )
{
printf("One ace counted high.\n");
score += 10; // one ace goes high
}
printf("Your score is %d\n", score);
if( score > 21 )
{
printf("You LOSE.\n");
}
return 0;
}
int deal_a_card()
{
int rank = rand()%13+1;
int suit = rand()%4;
switch (rank)
{
case 1: printf("Ace"); break;
case 11: printf("Jack"); break;
case 12: printf("Queen"); break;
case 13: printf("King"); break;
default:
printf("%d", rank);
break;
}
switch (suit)
{
case 0: printf(" Of Diamonds"); break;
case 1: printf(" Of Hearts"); break;
case 2: printf(" Of Spades"); break;
case 3: printf(" Of Clubs"); break;
}
printf("\n");
return rank;
}
int rank_to_score (int rank)
{
switch (rank)
{
case 11:
case 12:
case 13:
return 10;
default:
return rank;
}
}
2 Example with reference parameters
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// these are REFERENCE parameters, AKA
// "in-out" parameters. They get bound
// to the variables provided at the call.
void deal_card(int& rank, int& suit)
{
rank = rand()%13+1;
suit = rand()%4;
switch (rank)
{
case 1: printf("Ace"); break;
case 11: printf("Jack"); break;
case 12: printf("Queen"); break;
case 13: printf("King"); break;
default:
printf("%d", rank);
break;
}
switch (suit)
{
case 0: printf(" Of Diamonds"); break;
case 1: printf(" Of Hearts"); break;
case 2: printf(" Of Spades"); break;
case 3: printf(" Of Clubs"); break;
}
printf("\n");
}
int main()
{
int r1, s1, r2, s2;
srand(time(NULL));
deal_card(r1, s1);
deal_card(r2, s2);
//deal_card(5, 2); // ERROR
if(s1 == s2)
{
printf("FLUSH\n");
}
else if(r1 == r2)
{
printf("PAIR\n");
}
else
{
printf("Nothing.\n");
}
return 0;
}