Untitled
unknown
plain_text
8 months ago
13 kB
4
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;
}
void 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);
}
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");
}
else
{
printf("\ncara deu entrada %d", opcao2);
switch (opcao2)
{
case 2:
if (area > area2)
{
printf("\nCarta 1 venceu na propriedade: área\n\n");
pontuacao1 += 1;
}
else if (area < area2)
{
printf("\nCarta 2 venceu na propriedade: área\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo área!!!\n\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");
}
else
{
switch (opcao3)
{
case 3:
if (PIB > PIB2)
{
printf("\nCarta 1 venceu na propriedade: PIB\n\n");
pontuacao1 += 1;
}
else if (PIB < PIB2)
{
printf("\nCarta 2 venceu na propriedade: PIB\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo Área!!!\n\n");
}
break;
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");
}
else
{
switch (opcao4)
{
case 4:
if (perCapita(PIB, populacao) > perCapita(PIB2, populacao2))
{
printf("\nCarta 1 venceu na propriedade: renda per capita\n\n");
pontuacao1 += 1;
}
else if (perCapita(PIB, populacao) < perCapita(PIB2, populacao2))
{
printf("\n\nCarta 2 venceu na propriedade: renda per capita\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo Per Capita!!!\n\n");
}
break;
default:
printf("--------Opção inválida!--------\n\n");
break;
}
}
MenuAtributos(&opcao5);
if ((opcao5 == opcao1) || (opcao5 == opcao2) || (opcao5 == opcao3) || (opcao5 == opcao4))
{
printf("\nVocê já escolheu esta opção!\n");
printf("--------------------------------------------\n\n");
}
else
{
switch (opcao5)
{
case 5:
if (densidadePopulacional(populacao, area) < densidadePopulacional(populacao2, area2))
{
printf("\nCarta 1 venceu na propriedade: densidade populacional\n\n");
pontuacao1 += 1;
}
else if (densidadePopulacional(populacao, area) > densidadePopulacional(populacao2, area2))
{
printf("\nCarta 2 venceu na propriedade: densidade populacional\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo densidade Populacional!!!\n\n");
}
break;
default:
printf("--------Opção inválida!--------\n\n");
break;
}
}
MenuAtributos(&opcao6);
if ((opcao6 == opcao1) || (opcao6 == opcao2) || (opcao6 == opcao3) || (opcao6 == opcao4) || (opcao6 == opcao5))
{
printf("\nVocê já escolheu esta opção!\n");
printf("--------------------------------------------\n\n");
}
else
{
switch (opcao6)
{
case 6:
if (quantidadePontosTuristicos > quantidadePontosTuristicos2)
{
printf("\nCarta 1 venceu na propriedade: números de pontos turísticos\n\n");
pontuacao1 += 1;
}
else if (quantidadePontosTuristicos < quantidadePontosTuristicos2)
{
printf("\nCarta 2 venceu na propriedade: números de pontos turísticos\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo Pontos Turísticos!!!\n\n");
}
break;
default:
printf("--------Opção inválida!--------\n\n");
break;
}
}
MenuAtributos(&opcao7);
if ((opcao7 == opcao1) || (opcao7 == opcao2) || (opcao7 == opcao3) || (opcao7 == opcao4) || (opcao7 == opcao5) || (opcao7 == opcao6))
{
printf("\nVocê já escolheu esta opção!\n");
printf("--------------------------------------------\n\n");
}
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\n");
pontuacao1 += 1;
}
else if (superPoder(populacao, area, PIB, quantidadePontosTuristicos) < superPoder(populacao2, area2, PIB2, quantidadePontosTuristicos2))
{
printf("\n\nCarta 2 venceu com o seu superPoder maior\n\n");
pontuacao2 += 1;
}
else
{
printf("Empate no atributo Super Poder!!!\n\n");
}
break;
default:
printf("--------Opção inválida!--------\n\n");
break;
}
}
// Exibição dos Resultados:
printf("Pontuação da Carta 1: %d\n", pontuacao1);
printf("Pontuação da Carta 2: %d\n", 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");
}
return 0;
}Editor is loading...
Leave a Comment