Programação
Alínea a) Carta
A minha ideia inicial era fazer uma cadeia de if para cada naipe, mas como são 52 cartas no total, o código ficaria muito extenso e repetitivo.
Optei então declarar duas matrizes:
{naipes} com 4 caracteres
{valor} com 13 caracteres
Estes caracteres são iguais aos definidos nas instruções do enunciado.
Declarei uma variável tipo int carta que servia para obter a resposta do utilizador, através de scanf, e para funcionar como termo da expressão numérica de instrução.
Após digitação do utilizador, o programa imprimia a respectiva carta através de uma instrução if/else, que coloquei após erro da primeira tentativa ao aceitar valores maiores que 51.
Esta instrução de printf() continha duas strings em que o valor da carta era o resto da divisão do numero escolhido e o naipe a divisão do mesmo numero.
Junto imagens dos testes que efetuei após correção do erro detectado.
Imagem 1 -‐ Teste com valor superiores
1
Imagem 2 -‐ Teste aos 13 primeiros valores
Alínea b) Mão
Aproveitei algum do código da aliena anterior como por exemplo as matrizes para representação das cartas e as instruções de printf das cartas.
Comecei por implementar a instrução para ler o argumento na linha de comando e transformar em inteiro a variável semente com a instrução atoi sobre o argv(1).
2
Imagem 3 -‐ Teste com argumentos diferentes
Iniciei então o código para gerar inteiros aleatórios com as instruções srand e rand com resto de divisão por 50 para gerar 5 números.
Imagem 4 -‐ Testes para gerar 5 números diferentes
Após gerar estes cinco números era necessário guardar os mesmos. Criei uma variável guardar para manter os números num vetor