370 likes | 538 Views
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014. Capítulo VIII Strings, Estruturas e Subprogramas sem Parâmetros. Tema do Lab 8: Copa do Mundo de 2014 - 1ª Fase Ler as informações sobre a primeira fase da copa e fazer um relatório contendo, para cada um dos 8 grupos:
E N D
CES-10 INTRODUÇÃO À COMPUTAÇÃOAulas Práticas – 2014 Capítulo VIII Strings, Estruturas e Subprogramas sem Parâmetros
Tema do Lab 8: Copa do Mundo de 2014 - 1ª Fase • Ler as informações sobre a primeira fase da copa e fazer um relatório contendo, para cada um dos 8 grupos: • Os resultados dos jogos • Uma tabela contendo os nomes das seleções e mais seus pontos ganhos, seu números de vitórias, de gols marcados, de gols sofridos e saldos de gols • O nome da seleção primeira e segunda colocada
Tema do Lab 8: Copa do Mundo de 2014 - 1ª Fase • Os nomes das 32 seleções devem ser lidos de um arquivo • Os resultados de todos os jogos de cada grupo devem ser fornecidos pelo operador • O referido relatório deve ser escrito num arquivo
Sejam as declarações à esquerda Programa 8.1: Leitura dos nomes das seleções e montagem da estrutura de todos os grupos e suas informações typedef char cadeia[26]; typedef struct selecaoselecao; struct selecao { cadeia nome; int pontos, vitorias, golspro, golscontra, saldogols; }; tipo selecao São as informações sobre uma seleção nome pontos golspro golscontra saldogols vitorias
Sejam agora as declarações para um grupo de seleções typedef struct grupo grupo; struct grupo { char nome; selecaoVetorSelecoes[5]; int Resultados[6][2]; cadeia primeiro, segundo; }; grupo VetorGrupos[9]; O elemento zero de VetorSelecoes não será usado Sua representação gráfica tipo grupo nome primeiro segundo 0 0 VetorSelecoes 0 ####### cadeia cadeia char 0 int int int int int int int int int int int int 1 selecao 1 2 selecao 2 3 selecao 3 4 selecao 4 5 Resultados
O elemento zero de VetorGrupos não será usado grupo VetorGrupos[9]; VetorGrupos
A matriz Resultados: Seleção 1 x Seleção 3 Seleção 3 x Seleção 4 Seleção 1 x Seleção 2 Seleção 1 x Seleção 4 Seleção 2 x Seleção 3 Seleção 2 x Seleção 4 1ª Rodada 0 0 VetorSelecoes 0 int int 2ª Rodada ####### 0 1 int int selecao 1 2 int int 3ª Rodada selecao 2 3 int int selecao 3 int int 4 selecao 4 int int 5 Resultados
Copiar, salvar e executar o programa à esquerda #include <stdio.h> #include <stdlib.h> #include <string.h> typedef char cadeia[26]; /* Estrutura para as informacoes sobre cada selecao em seu grupo */ typedef struct selecaoselecao; struct selecao { cadeia nome; int pontos, vitorias, golspro, golscontra, saldogols; }; Continua no próximo slide
/* Estrutura para as informacoes de cada grupo */ typedef struct grupo grupo; struct grupo { char nome; selecaoVetorSelecoes[5]; int Resultados[6][2]; cadeia primeiro, segundo; }; /* Variaveis globais */ FILE *FileIn, *FileOut; grupo VetorGrupos[9]; O arquivo com os nomes das 32 seleções é fornecido pelo professor: ListaSelecoes.txt (aba de Códigos da página) Abrir esse arquivo Continua no próximo slide
/* Funcao LerSelecoes: leitura dos nomes das selecoes e colocacao em seus respectivos grupos */ void LerSelecoes () { int i, j, lenght; char nomegrupo, c; for (i = 1, nomegrupo = 'A'; i <= 8; nomegrupo++, i++) { VetorGrupos[i].nome = nomegrupo; for (j = 1; j <= 4; j++) { fgets(VetorGrupos[i].VetorSelecoes[j].nome,31,FileIn); lenght = strlen (VetorGrupos[i].VetorSelecoes[j].nome); VetorGrupos[i].VetorSelecoes[j].nome[lenght-1] = '\0'; VetorGrupos[i].VetorSelecoes[j].pontos = 0; VetorGrupos[i].VetorSelecoes[j].vitorias = 0; VetorGrupos[i].VetorSelecoes[j].golspro = 0; VetorGrupos[i].VetorSelecoes[j].golscontra = 0; VetorGrupos[i].VetorSelecoes[j].saldogols = 0; } } } 0 1 2 lenght-1 lenght 25 ----------------------------- \n \0 ------------------ Nenhuma seleção tem mais de 20 caracteres O <enter> será o último caractere armazenado, antes do ‘\0’; ele deve ser eliminado Continua no próximo slide
/* Funcao EscreverGrupos: escrita das informacoes sobre os grupos */ void EscreverGrupos () { int i, j; for (i = 1; i <= 8; i++) { fprintf (FileOut, "\n\nGRUPO %c: ", VetorGrupos[i].nome); fprintf (FileOut, "\n\n%-20s|%8s|%8s|%8s|%8s|%8s", "Selecao", "Pontos", "Vitorias", "GolsPro", "GolsCon", "SaldGols"); fprintf (FileOut, "\n--------------------|--------|--------|--------|--------|--------"); for (j = 1; j <= 4; j++) fprintf (FileOut, "\n%-20s|%8d|%8d|%8d|%8d|%8d", VetorGrupos[i].VetorSelecoes[j].nome, VetorGrupos[i].VetorSelecoes[j].pontos, VetorGrupos[i].VetorSelecoes[j].vitorias, VetorGrupos[i].VetorSelecoes[j].golspro, VetorGrupos[i].VetorSelecoes[j].golscontra, VetorGrupos[i].VetorSelecoes[j].saldogols); } } Continua no próximo slide
/* Funcao main */ int main () { /* Abertura dos arquivos de entrada e de saida */ FileIn = fopen ("ListaSelecoes.txt", "r"); FileOut = fopen ("RelatorioCopa2014.txt", "w"); fprintf (FileOut, "COPA DO MUNDO DE 2014"); /* Avisos de sobre os arquivos de entrada e saida */ printf ("Processamento das informacoes da Copa do Mundo de 2014\n\n"); printf ("\tArquivo ListaSelecoes.txt: Contem o nome das 32 selecoes da Copa\n\n"); printf ("\tArquivo RelatorioCopa2014.txt: Relatorio da Copa\n"); /* Processamento das informacoes sobre a Copa */ LerSelecoes (); EscreverGrupos (); /* Fechamento da tela */ printf ("\n\n"); system ("pause"); return 0; } /* Fim da funcao main */
No vídeo: Processamento das informacoes da Copa do Mundo de 2014 Arquivo ListaSelecoes.txt: Contem o nome das 32 selecoes da Copa Arquivo RelatorioCopa2014.txt: Relatorio da Copa Pressione qualquer tecla para continuar. . . Resultado da execução
No arquivo RelatorioCopa2014.txt: COPA DO MUNDO DE 2014 GRUPO A: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Brasil | 0| 0| 0| 0| 0 Croacia | 0| 0| 0| 0| 0 Mexico | 0| 0| 0| 0| 0 Camaroes | 0| 0| 0| 0| 0 GRUPO B: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Espanha | 0| 0| 0| 0| 0 Holanda | 0| 0| 0| 0| 0 Chile | 0| 0| 0| 0| 0 Australia | 0| 0| 0| 0| 0
No arquivo RelatorioCopa2014.txt: GRUPO C: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Colombia | 0| 0| 0| 0| 0 Grecia | 0| 0| 0| 0| 0 Costa do Marfim | 0| 0| 0| 0| 0 Japao | 0| 0| 0| 0| 0 GRUPO D: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Uruguai | 0| 0| 0| 0| 0 Costa Rica | 0| 0| 0| 0| 0 Inglaterra | 0| 0| 0| 0| 0 Italia | 0| 0| 0| 0| 0
No arquivo RelatorioCopa2014.txt: GRUPO E: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Suica | 0| 0| 0| 0| 0 Equador | 0| 0| 0| 0| 0 Franca | 0| 0| 0| 0| 0 Honduras | 0| 0| 0| 0| 0 GRUPO F: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Argentina | 0| 0| 0| 0| 0 BosniaHerzegovina | 0| 0| 0| 0| 0 Ira | 0| 0| 0| 0| 0 Nigeria | 0| 0| 0| 0| 0
No arquivo RelatorioCopa2014.txt: GRUPO G: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Alemanha | 0| 0| 0| 0| 0 Portugal | 0| 0| 0| 0| 0 Gana | 0| 0| 0| 0| 0 Estados Unidos | 0| 0| 0| 0| 0 GRUPO H: Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Belgica | 0| 0| 0| 0| 0 Argelia | 0| 0| 0| 0| 0 Russia | 0| 0| 0| 0| 0 Coreia do Sul | 0| 0| 0| 0| 0
Exercício do Lab 8: • Leitura e armazenamento dos resultados das três rodadas da 1ª Fase da Copa Para cada grupo os resultados devem ser guardados no campo-matriz Resultados de cada estrutura grupo do vetor VetorGrupos 0 0 0 int int 1ª Rodada 1 int int 2 int int 2ª Rodada 3 int int int int 4 3ª Rodada int int 5 Resultados
Exercício do Lab 8: • Cálculo dos pontos, do número de vitórias, de gols-pró, de gols-contra e do saldo de gols de cada seleção de cada grupo Esse cálculo deve usar o conteúdo da matriz Resultados de cada estrutura grupo do vetor VetorGrupos Os valores calculados devem ser armazenados no campo VetorSelecoesde cada estrutura grupo de VetorGrupos tipo selecao nome pontos golspro golscontra saldogols vitorias
Exercício do Lab 8: • Determinação das seleções primeira e segunda colocada de cada grupo Esse cálculo deve usar o conteúdo do vetor VetorSelecoesde cada estrutura grupo do vetor VetorGrupos Os resultados devem ser armazenados nos campos primeiro e segundo de cada estrutura grupo do vetor VetorGrupos • Critérios de desempate: • Pontuação • Número de vitórias • Saldo de gols • Gols marcados • Ordem alfabética
Exercício do Lab 8: • Escrita de todas as informações de VetorGrupos no arquivo RelatorioCopa2014.txt Os próximos slides mostram uma possível saída no vídeo e no arquivo RelatorioCopa2014.txt
No vídeo: Processamento das informacoes da Copa do Mundo de 2014 Arquivo ListaSelecoes.txt: Contem o nome das 32 selecoes da Copa Arquivo RelatorioCopa2014.txt: Relatorio da Copa Digite os resultados da 1a rodada do Grupo A: Brasil x Croacia: 2 0 Mexico x Camaroes: 3 1 Digite os resultados da 1a rodada do Grupo B: Espanha x Holanda: 4 3 Chile x Australia: 3 1 Digite os resultados da 1a rodada do Grupo C: Colombia x Grecia: 3 2 Costa do Marfim x Japao: 0 4 Digite os resultados da 1a rodada do Grupo D: Uruguai x Costa Rica: 3 1 Inglaterra x Italia: 0 0 Em amarelo: Digitação do operador
Digite os resultados da 1a rodada do Grupo E: Suica x Equador: 3 2 Franca x Honduras: 3 0 Digite os resultados da 1a rodada do Grupo F: Argentina x BosniaHerzegovina: 3 0 Ira x Nigeria: 2 3 Digite os resultados da 1a rodada do Grupo G: Alemanha x Portugal: 2 2 Gana x Estados Unidos: 1 3 Digite os resultados da 1a rodada do Grupo H: Belgica x Argelia: 2 0 Russia x Coreia do Sul: 1 1
Digite os resultados da 2a rodada do Grupo A: Brasil x Mexico: 1 1 Croacia x Camaroes: 2 3 Digite os resultados da 2a rodada do Grupo B: Espanha x Chile: 3 2 Holanda x Australia: 3 1 Digite os resultados da 2a rodada do Grupo C: Colombia x Costa do Marfim: 1 0 Grecia x Japao: 2 0 Digite os resultados da 2a rodada do Grupo D: Uruguai x Inglaterra: 1 1 Costa Rica x Italia: 1 3
Digite os resultados da 2a rodada do Grupo E: Suica x Franca: 2 2 Equador x Honduras: 2 0 Digite os resultados da 2a rodada do Grupo F: Argentina x Ira: 3 3 BosniaHerzegovina x Nigeria: 2 3 Digite os resultados da 2a rodada do Grupo G: Alemanha x Gana: 3 1 Portugal x Estados Unidos: 2 1 Digite os resultados da 2a rodada do Grupo H: Belgica x Russia: 3 2 Argelia x Coreia do Sul: 1 1
Digite os resultados da 3a rodada do Grupo A: Brasil x Camaroes: 3 1 Croacia x Mexico: 2 4 Digite os resultados da 3a rodada do Grupo B: Espanha x Australia: 3 0 Holanda x Chile: 2 2 Digite os resultados da 3a rodada do Grupo C: Colombia x Japao: 1 2 Grecia x Costa do Marfim: 2 0 Digite os resultados da 3a rodada do Grupo D: Uruguai x Italia: 2 1 Costa Rica x Inglaterra: 0 3
Digite os resultados da 3a rodada do Grupo E: Suica x Honduras: 2 1 Equador x Franca: 1 3 Digite os resultados da 3a rodada do Grupo F: Argentina x Nigeria: 2 1 BosniaHerzegovina x Ira: 2 1 Digite os resultados da 3a rodada do Grupo G: Alemanha x Estados Unidos: 2 1 Portugal x Gana: 3 1 Digite os resultados da 3a rodada do Grupo H: Belgica x Coreia do Sul: 2 1 Argelia x Russia: 1 1 Pressione qualquer tecla para continuar. . . Processreturned 0 (0x0) execution time : 835.480 s Pressanykey to continue.
No arquivo RelatorioCopa2014.txt: COPA DO MUNDO DE 2014 GRUPO A: Brasil 2 x 0 Croacia Mexico 3 x 1 Camaroes Brasil 1 x 1 Mexico Croacia 2 x 3 Camaroes Brasil 3 x 1 Camaroes Croacia 2 x 4 Mexico Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Brasil | 7| 2| 6| 2| 4 Croacia | 0| 0| 4| 9| -5 Mexico | 7| 2| 8| 4| 4 Camaroes | 3| 1| 5| 8| -3 Primeiro colocado: Mexico Segundo colocado: Brasil
GRUPO B: Espanha 4 x 3 Holanda Chile 3 x 1 Australia Espanha 3 x 2 Chile Holanda 3 x 1 Australia Espanha 3 x 0 Australia Holanda 2 x 2 Chile Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Espanha | 9| 3| 10| 5| 5 Holanda | 4| 1| 8| 7| 1 Chile | 4| 1| 7| 6| 1 Australia | 0| 0| 2| 9| -7 Primeiro colocado: Espanha Segundo colocado: Holanda
GRUPO C: Colombia 3 x 2 Grecia Costa do Marfim 0 x 4 Japao Colombia 1 x 0 Costa do Marfim Grecia 2 x 0 Japao Colombia 1 x 2 Japao Grecia 2 x 0 Costa do Marfim Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Colombia | 6| 2| 5| 4| 1 Grecia | 6| 2| 6| 3| 3 Costa do Marfim | 0| 0| 0| 7| -7 Japao | 6| 2| 6| 3| 3 Primeiro colocado: Grecia Segundo colocado: Japao
GRUPO D: Uruguai 3 x 1 Costa Rica Inglaterra 0 x 0 Italia Uruguai 1 x 1 Inglaterra Costa Rica 1 x 3 Italia Uruguai 2 x 1 Italia Costa Rica 0 x 3 Inglaterra Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Uruguai | 7| 2| 6| 3| 3 Costa Rica | 0| 0| 2| 9| -7 Inglaterra | 5| 1| 4| 1| 3 Italia | 4| 1| 4| 3| 1 Primeiro colocado: Uruguai Segundo colocado: Inglaterra
GRUPO E: Suica 3 x 2 Equador Franca 3 x 0 Honduras Suica 2 x 2 Franca Equador 2 x 0 Honduras Suica 2 x 1 Honduras Equador 1 x 3 Franca Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Suica | 7| 2| 7| 5| 2 Equador | 3| 1| 5| 6| -1 Franca | 7| 2| 8| 3| 5 Honduras | 0| 0| 1| 7| -6 Primeiro colocado: Franca Segundo colocado: Suica
GRUPO F: Argentina 3 x 0 BosniaHerzegovina Ira 2 x 3 Nigeria Argentina 3 x 3 Ira BosniaHerzegovina 2 x 3 Nigeria Argentina 2 x 1 Nigeria BosniaHerzegovina 2 x 1 Ira Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Argentina | 7| 2| 8| 4| 4 BosniaHerzegovina | 3| 1| 4| 7| -3 Ira | 1| 0| 6| 8| -2 Nigeria | 6| 2| 7| 6| 1 Primeiro colocado: Argentina Segundo colocado: Nigeria
GRUPO G: Alemanha 2 x 2 Portugal Gana 1 x 3 Estados Unidos Alemanha 3 x 1 Gana Portugal 2 x 1 Estados Unidos Alemanha 2 x 1 Estados Unidos Portugal 3 x 1 Gana Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Alemanha | 7| 2| 7| 4| 3 Portugal | 7| 2| 7| 4| 3 Gana | 0| 0| 3| 9| -6 Estados Unidos | 3| 1| 5| 5| 0 Primeiro colocado: Alemanha Segundo colocado: Portugal
GRUPO H: Belgica 2 x 0 Argelia Russia 1 x 1 Coreia do Sul Belgica 3 x 2 Russia Argelia 1 x 1 Coreia do Sul Belgica 2 x 1 Coreia do Sul Argelia 1 x 1 Russia Selecao | Pontos|Vitorias| GolsPro| GolsCon|SaldGols --------------------|--------|--------|--------|--------|-------- Belgica | 9| 3| 7| 3| 4 Argelia | 2| 0| 2| 4| -2 Russia | 2| 0| 4| 5| -1 Coreia do Sul | 2| 0| 3| 4| -1 Primeiro colocado: Belgica Segundo colocado: Russia
Usar subprogramas: • A função main não deve ter comandos que atuem diretamente sobre as struct’s do programa • Subprogramas chamados por ela é que devem fazê-lo
Sugestões para a função main e os subprogramas (podem ou não ser seguidas): /* Processamento das informacoes sobre a Copa */ LerSelecoes (); PrimeiraRodada (); SegundaRodada (); TerceiraRodada (); PrimeiroESegundoDosGrupos (); EscreverGrupos (); Lê os resultados da 1ª rodada de todos os grupos e atualiza a tabela de Resultados e a de Seleções de cada grupo: pontos, vitorias, golspro, golscontra e saldogols Idem para a 2ª rodada Idem para a 3ª rodada Calcula o primeiro e o segundo colocados de todos os grupos e armazena isso nos campos de cada grupo em VetorGrupos Deve ser alterada para escrever todas as informações de VetorGrupos