Untitled

 avatar
unknown
plain_text
23 days ago
13 kB
6
Indexable
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

// Desafio Super Trunfo - Países
// Tema 2 - Comparação das Cartas
// Este código inicial serve como base para o desenvolvimento do sistema de comparação de cartas de cidades.
// Siga os comentários para implementar cada parte do desafio.

unsigned long int perCapita(float pib, int populacao)
{
    if (populacao <= 0)
    {
        printf("A popolução dever ser maior do que zero!!");
        return 0;
    }

    return (unsigned long int)(pib / populacao);
}

// Função que calcula a densidade populacional
float densidadePopulacional(int populacao, float area)
{
    if (area <= 0)
    {
        printf("A área deve ser maior do que zero!!\n");
        return 0;
    }
    return (float)populacao / area;
}

// Função que calcula o super poder da cada carta
float superPoder(int populacao, float area, float pib, int pontosTuristicos)
{
    float perCapitaValue = (float)perCapita(pib, populacao); // Converte explicitamente para evitar problemas no resultado
    float resultado = populacao + area + pib + perCapitaValue + (1 / densidadePopulacional(populacao, area)) + pontosTuristicos;
    return resultado;
}

// Função para requisição de dados para as cartas
int carta(char *estado, char *codigo, char *nome, int *populacao, float *area, float *pib, int *pontosTuristicos)
{

    printf("Digite o Estado entre A e H: ");
    scanf(" %c", estado);
    *estado = toupper(*estado);

    printf("Digite o código da cidade entre 1 e 4: ");
    scanf("%2s", codigo);

    printf("Digite o nome da Cidade: ");
    scanf(" %[^\n]", nome);

    printf("Digite a população da cidade: ");
    scanf("%d", populacao);

    printf("Digite a Área da cidade: ");
    scanf("%f", area);

    printf("Digite o PIB da cidade: ");
    scanf("%f", &(*pib));
    *pib *= 1000000000;

    printf("Digite a quantidade de pontos turísticos da cidade: ");
    scanf("%d", pontosTuristicos);

    return 0;
}

// Função que retorna a carta com todos os valores que foram requeridos formatada como pedido
int cartaPronta(char estado, char *codigo, char *nome, int populacao, float area, float pib, int pontosTuristicos)
{
    printf("\nEstado: %c", estado);
    printf("\nCódigo da Carta: %c%02d", estado, atoi(codigo));
    printf("\nNome da Cidade: %s", nome);
    printf("\nPopulação: %d", populacao);
    printf("\nÁrea: %.2f km²", area);
    printf("\nDensidade Populacional: %.2f pessoas/km²", densidadePopulacional(populacao, area));
    printf("\nPIB: %.2f bilhões de reais", pib / 1000000000);
    printf("\nPIB per Capita: %lu reais", perCapita(pib, populacao));
    printf("\nNúmero de Pontos Turísticos: %d\n", pontosTuristicos);
    printf("\nSeu SuperPoder é de: %.2f\n", superPoder(populacao, area, pib, pontosTuristicos));

    return 0;
}

int MenuAtributos(int opcao)
{
    printf("Escolha com qual dos atributos você quer competir:\n");
    printf("1. População\n");
    printf("2. Área\n");
    printf("3. PIB\n");
    printf("4. Per Capita\n");
    printf("5. Densidade Populacional\n");
    printf("6. Pontos Turísticos\n");
    printf("7. Super Poder\n");
    scanf("%d", &opcao);
    return opcao;
}

int main()
{
    // Definição das variáveis para armazenar as propriedades das cidades
    // Você pode utilizar o código do primeiro desafio
    char estado, estado2;
    char codigoDaCidade[3], codigoDaCidade2[3];
    char nomeDaCidade[50], nomeDaCidade2[50];
    int populacao, quantidadePontosTuristicos, populacao2, quantidadePontosTuristicos2;
    float area, PIB, area2, PIB2;
    int opcao1, opcao2, opcao3, opcao4, opcao5, opcao6, opcao7, opcao8;
    int pontuacao1 = 0, pontuacao2 = 0;

    // Cadastro das Cartas:
    // Implemente a lógica para solicitar ao usuário que insira os dados das cidades
    // utilizando a função scanf para capturar as entradas.
    // utilize o código do primeiro desafio
    printf("Bem-Vindo ao Jogo Super-Trunfo!\n\n");
    printf("Crie a carta do primeiro jogador:\n");

    // CRIAÇÃO DA CARTA DO PRIMEIRO JOGADOR//
    printf("Digite os dados da primera carta: \n\n");
    carta(&estado, codigoDaCidade, nomeDaCidade, &populacao, &area, &PIB, &quantidadePontosTuristicos);

    // RETORNO DA PRIMEIRA CARTA//
    printf("\n--------Essa é a carta do primeiro jogador--------");
    cartaPronta(estado, codigoDaCidade, nomeDaCidade, populacao, area, PIB, quantidadePontosTuristicos);

    printf("\nAgora crie a carta do segundo jogador\n");

    // CRIAÇÃO DA CARTA DO SEGUNDO JOGADOR//
    printf("Digite os dados da segunda carta: \n\n");
    carta(&estado2, codigoDaCidade2, nomeDaCidade2, &populacao2, &area2, &PIB2, &quantidadePontosTuristicos2);

    // RETORNO DA CARTA DO SEGUNDO JOGADOR //
    printf("\n--------Essa é a carta do segundo jogador--------");
    cartaPronta(estado2, codigoDaCidade2, nomeDaCidade2, populacao2, area2, PIB2, quantidadePontosTuristicos2);

    // Exemplo:
    // printf("Digite o código da cidade: ");
    // scanf("%s", codigo);

    // (Repita para cada propriedade)
    printf("\n\nQue comece a batalha!\n");

    // Escolha de atributos //

    // função para escolha dos atributos
    MenuAtributos(opcao1);

    // Comparação de Cartas:
    // Desenvolva a lógica de comparação entre duas cartas.
    // Utilize estruturas de decisão como if, if-else para comparar atributos como população, área, PIB, etc.

    switch (opcao1)
    {
    case 1:
        if (populacao > populacao2)
        {
            printf("\nCarta 1 venceu na propriedade: população\n\n");
            pontuacao1 += 1;
        }
        else if (populacao < populacao2)
        {
            printf("\nCarta 2 venceu na propriedade: população\n\n");
            pontuacao2 += 1;
        }
        else
        {
            printf("Empate no atributo população!!!");
        }
        break;
    default:
        printf("--------Opção inválida!--------\n\n");
        break;
    }
    MenuAtributos(opcao2);

    if (opcao2 == opcao1)
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {
        printf("\ncara deu entrada %d", opcao2);
        switch (opcao2)
        {
        case 2:
            if (area > area2)
            {
                printf("\nCarta 1 venceu na propriedade: área\n");
                pontuacao1 += 1;
            }
            else if (area < area2)
            {
                printf("\nCarta 2 venceu na propriedade: área\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo área!!!\n");
            }
            break;
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }
    }
    MenuAtributos(opcao3);

    if ((opcao3 == opcao1) || (opcao3 == opcao2))
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {
        printf("\ncara deu entrada %d", opcao3);
        switch (opcao3)
        {
        case 3:
            if (area > area2)
            {
                printf("\nCarta 1 venceu na propriedade: PIB\n");
                pontuacao1 += 1;
            }
            else if (area < area2)
            {
                printf("\nCarta 2 venceu na propriedade: PIB\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo PIB!!!\n");
            }
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }
    }
    MenuAtributos(opcao4);

    if ((opcao4 == opcao1) || (opcao4 == opcao2) || (opcao4 == opcao3))
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {

        switch (opcao4)
        {
        case 4:
            if (perCapita(PIB, populacao) > perCapita(PIB2, populacao2))
            {
                printf("\nCarta 1 venceu na propriedade: renda per capita\n");
                pontuacao1 += 1;
            }
            else if (perCapita(PIB, populacao) < perCapita(PIB2, populacao2))
            {
                printf("\nCarta 2 venceu na propriedade: renda per capita\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo Per Capita!!!\n");
            }
            break;
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }
    }
    MenuAtributos(opcao5);

    if ((opcao5 != opcao6) || (opcao5 != opcao7))
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {
        switch (opcao5)
        {
        case 5:
            if (densidadePopulacional(populacao, area) < densidadePopulacional(populacao2, area2))
            {
                printf("\nCarta 1 venceu na propriedade: densidade populacional\n");
                pontuacao1 += 1;
            }
            else if (densidadePopulacional(populacao, area) > densidadePopulacional(populacao2, area2))
            {
                printf("\nCarta 1 venceu na propriedade: densidade populacional\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo densidade Populacional!!!\n");
            }
            break;
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }
    }
    MenuAtributos(opcao6);

    if (opcao6 != opcao7)
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {
        switch (opcao6)
        {
        case 6:
            if (quantidadePontosTuristicos > quantidadePontosTuristicos2)
            {
                printf("\nCarta 1 venceu na propriedade: números de pontos turísticos\n");
                pontuacao1 += 1;
            }
            else if (quantidadePontosTuristicos < quantidadePontosTuristicos2)
            {

                printf("\nCarta 2 venceu na propriedade: números de pontos turísticos\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo Pontos Turísticos!!!\n");
            }
            break;
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }
    }
    MenuAtributos(opcao7);

    if (opcao7 != opcao7)
    {
        printf("\nVocê já escolheu esta opção!\n");
        printf("--------------------------------------------\n\n");
        return 0;
    }
    else
    {
        switch (opcao7)
        {
        case 7:
            if (superPoder(populacao, area, PIB, quantidadePontosTuristicos) > superPoder(populacao2, area2, PIB2, quantidadePontosTuristicos2))
            {
                printf("\nCarta 1 venceu com o seu superPoder maior\n");
                pontuacao1 += 1;
            }
            else if (superPoder(populacao, area, PIB, quantidadePontosTuristicos) > superPoder(populacao2, area2, PIB2, quantidadePontosTuristicos2))
            {
                printf("\nCarta 2 venceu com o seu superPoder maior\n");
                pontuacao2 += 1;
            }
            else
            {
                printf("Empate no atributo Super Poder!!!\n");
            }

            break;
        default:
            printf("--------Opção inválida!--------\n\n");
            break;
        }

        // Exibição dos Resultados:
        printf("Pontuação da Carta 1: %d", pontuacao1);
        printf("Pontuação da Carta 1: %d", pontuacao2);
        // Após realizar as comparações, exiba os resultados para o usuário.
        // Certifique-se de que o sistema mostre claramente qual carta venceu e com base em qual atributo.

        // Exemplo:
        if (pontuacao1 > pontuacao2)
        {
            printf("A cidade vencedora é: %s\n", nomeDaCidade);
        }
        else if (pontuacao2 > pontuacao1)
        {
            printf("A cidade vencedora é: %s\n", nomeDaCidade2);
        }
        else
        {
            printf("Houve empate dos jogadores");
        }
        // }
    }
Editor is loading...
Leave a Comment