A maior rede de estudos do Brasil

Escreva um programa em C

Escreva um programa em C que solicite ao usuário o número de pinos derrubados por cada bola em um boliche padrão de 10 frames e utilize estes dados para calcular o score do jogador. Abaixo estão as regras usadas para contar os pontos no boli- che:  Cada "frame" do boliche permite ao jogador duas oportunidades para derrubar 10 pinos.  Se o jogador derruba menos do que 10 pinos, então seu score para aquele frame é o número de pinos derrubados.  Mas se o jogador derruba todos os 10 pinos em um frame, a contagem de pontos se toma mais interessante. Existem dois casos: um spare, no qual a primeira bola derruba menos que 10 pinos, e a segunda derruba os demais; e um strike, no qual a primeira bola derruba todos os 10 pinos. Em ambos os casos, o score para o frame não pode ser totalizado até que o frame seguinte tenha iniciado. No caso de um spare em um frame, os pontos da primeira bola do frame seguinte são adicionados aos 10 pontos do presente frame, e o frame seguinte é computado normalmente (assim um spare faz com que a primeira bola do frame seguinte seja computada duas vezes). No caso de um strike, os pontos das duas próximas bolas roladas são adicionados aos 10 pontos do presente frame, mesmo que leve mais dois frames para rolar estas duas bolas. Finalmente no décimo frame, se você fez um spare você pode rolar uma bola extra no décimo frame, e se você fez um strike, você pode rolar duas bolas extras, a fim de dar a mesma vantagem de contagem de pontos do décimo frame.

2 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Conceitos: Sequencias logicas, loops, vetores, entra e saida de sistema.


//https://www.solbrilhando.com.br/Esportes/Boliche/Simulador_caixa.htm

#include <stdio.h>

#include <stdlib.h>

#define JOGADAS 18

int main(void) {

    //int game[21] = {10, 9, 1, 6, 3, 7, 0, 8, 2, 0, 8, 2, 0, 8, 2, 0, 8, 10, 9, 1};

    //int game[21] = {9,  1, 3 ,4 ,8 ,2 ,6 ,4 ,7 ,1 ,10, 8 ,2 ,5, 1 ,8 , 0, 7, 3, 0};

    //int game[] = {9, 1, 0, 10, 10, 10, 6, 2, 7, 3, 8, 2, 10, 9, 0, 9, 1 , 2, 0, 0};

    //int game[] = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 , 0, 0};

    int i, j, pontos_finais = 0;

    int game[21] = {0};

    printf("Digite os numeros sequencialmente... \n");

    printf("No final complente com zeros...\n");

    printf("No caso de strikes digite apenas a primeira jogada (10)\n");

    for (j = 0; j < 21; j++)

    {

    scanf("%d\n", &game[j]);

    

    }

    for(i=0; i < JOGADAS; i++) {

        if(game[i] == 10) {

            printf("STRIKE\n");

            pontos_finais = pontos_finais +  10 + game[i+1] + game[i+2]; 

        }

        else if (game[i]+game[i+1] == 10) {

            printf("SPARE\n");

            pontos_finais = pontos_finais + game[i] + game[i+1] + game[i+2];

            i++; 

        }

        else {

            printf("MISS\n");

            pontos_finais = pontos_finais + game[i] + game[i+1];

            i++;

        }

        

    }

    printf("Pontuação Final: %d\n", pontos_finais);

    return 0;

}    Para fazer o código basta ter conhecimentos em vetores, sequencias logicas e loops. O segredo esta em não incrementar quando tiver um “strike”.

Conceitos: Sequencias logicas, loops, vetores, entra e saida de sistema.


//https://www.solbrilhando.com.br/Esportes/Boliche/Simulador_caixa.htm

#include <stdio.h>

#include <stdlib.h>

#define JOGADAS 18

int main(void) {

    //int game[21] = {10, 9, 1, 6, 3, 7, 0, 8, 2, 0, 8, 2, 0, 8, 2, 0, 8, 10, 9, 1};

    //int game[21] = {9,  1, 3 ,4 ,8 ,2 ,6 ,4 ,7 ,1 ,10, 8 ,2 ,5, 1 ,8 , 0, 7, 3, 0};

    //int game[] = {9, 1, 0, 10, 10, 10, 6, 2, 7, 3, 8, 2, 10, 9, 0, 9, 1 , 2, 0, 0};

    //int game[] = {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 , 0, 0};

    int i, j, pontos_finais = 0;

    int game[21] = {0};

    printf("Digite os numeros sequencialmente... \n");

    printf("No final complente com zeros...\n");

    printf("No caso de strikes digite apenas a primeira jogada (10)\n");

    for (j = 0; j < 21; j++)

    {

    scanf("%d\n", &game[j]);

    

    }

    for(i=0; i < JOGADAS; i++) {

        if(game[i] == 10) {

            printf("STRIKE\n");

            pontos_finais = pontos_finais +  10 + game[i+1] + game[i+2]; 

        }

        else if (game[i]+game[i+1] == 10) {

            printf("SPARE\n");

            pontos_finais = pontos_finais + game[i] + game[i+1] + game[i+2];

            i++; 

        }

        else {

            printf("MISS\n");

            pontos_finais = pontos_finais + game[i] + game[i+1];

            i++;

        }

        

    }

    printf("Pontuação Final: %d\n", pontos_finais);

    return 0;

}    Para fazer o código basta ter conhecimentos em vetores, sequencias logicas e loops. O segredo esta em não incrementar quando tiver um “strike”.

Essa pergunta já foi respondida por um dos nossos especialistas