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.
#define MAX_CARTAS 32
typedef struct
{
char Estado;
char CodigoDaCidade[3];
char NomeDaCidade[50];
int Populacao;
float Area;
float DensidadePopulacional;
double PIB;
float PercaCapita;
int PontosTuristicos;
float SuperPoder;
} CartaType;
// variável que representa o valor máximo possível de cartas cadastradas
CartaType listaDeCartas[MAX_CARTAS];
// funcão para criar uma nova carta
CartaType criarCarta()
{
CartaType carta;
printf("Digite o Estado entre A e H: ");
scanf(" %c", &carta.Estado);
printf("Digite o código da cidade entre 1 e 4: ");
scanf("%s", carta.CodigoDaCidade);
printf("Digite o nome da Cidade: ");
scanf(" %[^\n]", carta.NomeDaCidade);
printf("Digite a população da cidade: ");
scanf("%d", &carta.Populacao);
printf("Digite a Área da cidade: ");
scanf("%f", &carta.Area);
printf("Digite o PIB da cidade: ");
scanf("%lf", &carta.PIB);
printf("Digite a quantidade de pontos turísticos da cidade: ");
scanf("%d", &carta.PontosTuristicos);
carta.PercaCapita = (carta.PIB * 1000000000) / carta.Populacao;
carta.DensidadePopulacional = carta.Populacao / carta.Area;
carta.SuperPoder = carta.Populacao + carta.Area + carta.PIB + carta.PontosTuristicos + carta.PercaCapita + (1.0f / carta.DensidadePopulacional);
return carta;
}
// Função que retorna a carta com todos os valores que foram requeridos formatada como pedido
void imprimirCarta(CartaType C)
{
printf("\nEstado: %c", toupper(C.Estado));
printf("\nCódigo da Carta: %c%02d", toupper(C.Estado), atoi(C.CodigoDaCidade));
printf("\nNome da Cidade: %s", C.NomeDaCidade);
printf("\nPopulação: %d", C.Populacao);
printf("\nÁrea: %.2f km²", C.Area);
printf("\nDensidade Populacional: %.2f pessoas/km²", C.DensidadePopulacional);
printf("\nPIB: %.2f bilhões de reais", C.PIB);
printf("\nPIB per Capita: %.2f reais", C.PercaCapita);
printf("\nNúmero de Pontos Turísticos: %d\n", C.PontosTuristicos);
printf("\nSeu SuperPoder é de: %.2f\n", C.SuperPoder);
}
int main()
{
CartaType carta;
// Definição das variáveis para armazenar as propriedades das cidades
// Você pode utilizar o código do primeiro desafio
int opcao;
int opcaoMenu;
int totalCartas = 0;
double pontuacao1 = 0, pontuacao2 = 0;
// 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
// CRIAÇÃO DA CARTA DO PRIMEIRO JOGADOR//
// RETORNO DA PRIMEIRA CARTA//
// // CRIAÇÃO DA CARTA DO SEGUNDO JOGADOR//
// // RETORNO DA CARTA DO SEGUNDO JOGADOR //
// Exemplo:
// printf("Digite o código da cidade: ");
// scanf("%s", codigo);
// (Repita para cada propriedade)
// 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.
do
{
printf("\n----------***Bem-Vindo ao Jogo Super-Trunfo***----------\n\n");
printf("Selecione uma das opções abaixo: \n");
printf("1. Cadastrar carta\n");
printf("2. Mostrar cartas\n");
printf("3. Compare os atributos das cartas\n");
printf("4. Sobre o Jogo\n");
printf("5. Sair do Jogo\n");
scanf("%d", &opcaoMenu);
switch (opcaoMenu)
{
case 1:
// Cadastro das Cartas:
printf("\nDigite os dados da carta (%d): \n", totalCartas + 1);
listaDeCartas[totalCartas] = criarCarta();
totalCartas++;
break;
case 2:
// Retorno das cartas cadastradas devidamente formatadas
if (totalCartas == 0)
{
printf("\nNenhuma carta cadastrada ainda!!");
}
else
{
printf("\n--------Cartas Cadastradas--------\n");
for (int i = 0; i < totalCartas; i++)
{
printf("\nCarta (%d)", i + 1);
imprimirCarta(listaDeCartas[i]);
printf("\n-----------------------------------");
}
}
break;
case 3:
// Escolha de atributos //
if (totalCartas < 2)
{
printf("É necessário pelo menos duas cartas cadastradas para comparar!\n");
break;
}
CartaType carta1 = listaDeCartas[0];
CartaType carta2 = listaDeCartas[1];
do
{
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");
printf("8. Mostrar Carta vencedora!\n");
printf("9. Voltar para o menu do Jogo\n");
scanf("%d", &opcao);
switch (opcao)
{
case 1:
printf("População Carta 1 é: %d - População Carta 2 é: %d", carta1.Populacao, carta2.Populacao);
if (carta1.Populacao > carta2.Populacao)
{
printf("\nCarta 1 venceu na propriedade: População\n\n");
pontuacao1 += carta1.Populacao;
}
else if (carta1.Populacao < carta2.Populacao)
{
printf("\nCarta 2 venceu na propriedade: População\n\n");
pontuacao2 += carta2.Populacao;
}
else
{
printf("Empate no atributo População!!!\n\n");
}
break;
case 2:
printf("Área Carta 1 é: %.2f - Área Carta 2 é: %.2f", carta1.Area, carta2.Area);
if (carta1.Area > carta2.Area)
{
printf("\nCarta 1 venceu na propriedade: área\n\n");
pontuacao1 += carta1.Area;
}
else if (carta1.Area < carta2.Area)
{
printf("\nCarta 2 venceu na propriedade: área\n\n");
pontuacao2 += carta2.Area;
}
else
{
printf("Empate no atributo área!!!\n\n");
}
break;
case 3:
printf("PIB Carta 1 é: %.2lf - PIB Carta 2 é: %.2lf", carta1.PIB, carta2.PIB);
if (carta1.PIB > carta2.PIB)
{
printf("\nCarta 1 venceu na propriedade: PIB\n\n");
pontuacao1 += carta1.PIB;
}
else if (carta1.PIB < carta2.PIB)
{
printf("\nCarta 2 venceu na propriedade: PIB\n\n");
pontuacao2 += carta2.PIB;
}
else
{
printf("Empate no atributo PIB!!!\n\n");
}
break;
case 4:
printf("PIB Per Capita Carta 1 é: %.2f - PIB Per Capita Carta 2 é: %.2f", carta1.PercaCapita, carta2.PercaCapita);
if (carta1.PercaCapita > carta2.PercaCapita)
{
printf("\nCarta 1 venceu na propriedade: PIB Per Capita\n\n");
pontuacao1 += carta1.PercaCapita;
}
else if (carta1.PercaCapita < carta2.PercaCapita)
{
printf("\nCarta 2 venceu na propriedade: PIB Per Capita\n\n");
pontuacao2 += carta2.PercaCapita;
}
else
{
printf("Empate no atributo PIB Per Capita!!!\n\n");
}
break;
case 5:
printf("Densidade Populacional Carta 1 é: %.2f - Densidade Populacional Carta 2 é: %.2f", carta1.DensidadePopulacional, carta2.DensidadePopulacional);
if (carta1.DensidadePopulacional < carta2.DensidadePopulacional)
{
printf("\nCarta 1 venceu na propriedade: Densidade Populacional\n\n");
pontuacao1 += carta1.DensidadePopulacional;
}
else if (carta1.DensidadePopulacional > carta2.DensidadePopulacional)
{
printf("\nCarta 2 venceu na propriedade: Densidade Populacional\n\n");
pontuacao2 += carta2.DensidadePopulacional;
}
else
{
printf("Empate no atributo Densidade Populacional!!!\n\n");
}
break;
case 6:
printf("Pontos Turísticos Carta 1 é: %d - Pontos Turísticos Carta 2 é: %d", carta1.PontosTuristicos, carta2.PontosTuristicos);
if (carta1.PontosTuristicos > carta2.PontosTuristicos)
{
printf("\nCarta 1 venceu na propriedade: Pontos Turísticos\n\n");
pontuacao1 += carta1.PontosTuristicos;
}
else if (carta1.PontosTuristicos < carta2.PontosTuristicos)
{
printf("\nCarta 2 venceu na propriedade: Pontos Turísticos\n\n");
pontuacao2 += carta2.PontosTuristicos;
}
else
{
printf("Empate no atributo Pontos Turísticos!!!\n\n");
}
break;
case 7:
printf("Super Poder Carta 1 é: %.2f - Super Poder Carta 2 é: %.2f", carta1.SuperPoder, carta2.SuperPoder);
if (carta1.SuperPoder > carta2.SuperPoder)
{
printf("\nCarta 1 venceu na propriedade: PIB\n\n");
pontuacao1 += carta1.SuperPoder;
}
else if (carta1.SuperPoder < carta2.SuperPoder)
{
printf("\nCarta 2 venceu na propriedade: PIB\n\n");
pontuacao2 += carta2.SuperPoder;
}
else
{
printf("Empate no atributo Super Poder!!!\n\n");
}
break;
case 8:
printf("\nPontuação da Carta 1: %f\n", pontuacao1);
printf("\nPontuação da Carta 2: %f\n", pontuacao2);
if (pontuacao1 > pontuacao2)
{
printf("\nCidade %s venceu\n", carta1.NomeDaCidade);
}
else if (pontuacao2 > pontuacao1)
{
printf("\nCidade %s venceu\n", carta1.NomeDaCidade);
}
else
{
printf("\nHouve empate!");
}
break;
case 9:
printf("Voltando ao menu principal...\n");
break;
default:
printf("Opção inválida! Escolha um número de 1 a 8.\n");
break;
}
} while (opcao != 9);
getchar();
break;
case 4:
printf("***---------- REGRAS DO JOGO ----------***\n");
printf("\nPara Jogar é necessário castrar pelo menos 2 cartas antes para que seja possível a comparação de uma com a outra\n");
break;
case 5:
printf("Sair do Jogo...\n");
break;
default:
printf("Opção Inválida\n");
break;
}
} while (opcaoMenu != 5); // menu principal finalização
// Exibição dos Resultados:
// 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:
return 0;
}Editor is loading...
Leave a Comment