A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros.

Apresentações semelhantes


Apresentação em tema: "CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros."— Transcrição da apresentação:

1 CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros

2 Tema do Lab 9: Campeonato de Fórmula 1 Ler as informações sobre o campeonato e montar as seguintes tabelas: Ler as informações sobre o campeonato e montar as seguintes tabelas: – Tabela dos locais dos grandes prêmios – Tabela de informações sobre os pilotos: nome, escuderia, classificação em cada grande prêmio e total de pontos, ordenada decrescentemente pelo total de pontos – Tabela de informações sobre as escuderias: nome e total de pontos, ordenada decrescentemente pelo total de pontos

3 Tema do Lab 9: Campeonato de Fórmula 1 Os locais dos GPs, os nomes dos pilotos e suas escuderias devem ser lidos de um arquivo Os locais dos GPs, os nomes dos pilotos e suas escuderias devem ser lidos de um arquivo Os resultados de cada GP devem ser fornecidos pelo operador Os resultados de cada GP devem ser fornecidos pelo operador O relatório completo do campeonato, com a classificação dos pilotos em cada GP, com a pontuação final e com a classificação final dos pilotos e das escuderias, deve ser escrito num arquivo O relatório completo do campeonato, com a classificação dos pilotos em cada GP, com a pontuação final e com a classificação final dos pilotos e das escuderias, deve ser escrito num arquivo

4 Programa 9.1: Montagem da tabela de locais dos grandes prêmios typedef char cadeia1[16]; struct tabelagps { cadeia1 VetGPs[30]; int ngps; }; typedef struct tabelagps tabelagps; tabelagps TabGPs; Sejam as declarações à esquerda Elas implementam a seguinte estrutura: local ngps VetGPs TabGPs

5 #include #include typedef char cadeia1[16], cadeia2[21]; /* Estrutura para a tabela de locais dos GPs */ struct tabelagps { cadeia1 VetGPs[30]; int ngps; }; typedef struct tabelagps tabelagps; /* Variaveis globais */ tabelagps TabGPs; FILE *filein, *fileout; Copiar, salvar e executar o programa à esquerda Continua no próximo slide

6 /* Funcao LerGPs: leitura dos locais dos GPs */ void LerGPs () { int i; char c, d; fscanf (filein, "%d%c", &TabGPs.ngps, &c); fscanf (filein, "%d%c", &TabGPs.ngps, &c); for (i = 0; i < TabGPs.ngps; i++) { for (i = 0; i < TabGPs.ngps; i++) { fgets (TabGPs.VetGPs[i], 16, filein); fgets (TabGPs.VetGPs[i], 16, filein); fscanf (filein, "%c", &c); fscanf (filein, "%c", &c);}} Continua no próximo slide A variável TabGPs é global Escrever o seguinte arquivo de entrada, de nome Formula1Entrada.txt: 5 Sao Paulo Londres Los Angeles Paris Tokio 15 O Borland não completa com espaços em branco até interar 15 caracteres Leitura do Leitura de no máximo 15 (16-1) caracteres

7 /* Funcao EscreverGPs: escrita dos locais dos GPs */ void EscreverGPs () { int i; fprintf (fileout, \n\nLocais dos %d GP's:\n", TabGPs.ngps); for (i = 0; i < TabGPs.ngps; i++) for (i = 0; i < TabGPs.ngps; i++) fprintf (fileout, "\n%-20s", TabGPs.VetGPs[i]); fprintf (fileout, "\n%-20s", TabGPs.VetGPs[i]);} Continua no próximo slide

9 No vídeo: Processamento das informacoes de um Campeonato de Formula 1 Arquivo Formula1Entrada: locais, pilotos e escuderias dos GPs Arquivo Formula1Saida: Relatorio completo do campeonato Digite algo para encerrar: No arquivo Formula1Saida: CAMPEONATO DE FORMULA 1 - RESULTADOS Locais dos 5 GP's: Sao Paulo Londres Los Angeles ParisTokio Resultado da execução

10 Programa 9.2: Montagem da tabela dos pilotos participantes do campeonato de Fórmula 1 struct piloto { cadeia2 NomePiloto; cadeia1 Escuderia; int Classificacao[30], TotalPontos; int Classificacao[30], TotalPontos;}; typedef struct piloto piloto; struct tabelapilotos { piloto VetPilotos[30]; int npilotos; }; typedef struct tabelapilotos tabelapilotos; tabelapilotos TabPilotos; Sejam as declarações à esquerda Elas implementam a estrutura a seguir NomePilotoEscuderia tipo piloto TotalPontosClassificacao

11 NomePilotoEscuderiaClassificacaoTotalPontos npilotos VetPilotos TabPilotos

12 /* Estrutura para a tabela de locais dos GPs */ struct tabelagps { }; typedef struct tabelagps tabelagps; /* Estrutura para as informacoes sobre um piloto participante dos GPs */ struct piloto { cadeia2 NomePiloto; cadeia1 Escuderia; int Classificacao[30], TotalPontos; int Classificacao[30], TotalPontos;}; typedef struct piloto piloto; /* Estrutura para a tabela de pilotos participantes dos GPs */ struct tabelapilotos { piloto VetPilotos[30]; int npilotos; }; typedef struct tabelapilotos tabelapilotos; Fazer no Programa 9.1 as alterações que se seguem Continua no próximo slide

13 /* Variaveis globais */ tabelagps TabGPs; tabelapilotos TabPilotos; FILE *filein, *fileout; /* Funcao LerGPs: leitura dos locais dos GPs */ void LerGPs () { } /* Funcao EscreverGPs: escrita dos locais dos GPs */ void EscreverGPs () { } Continua no próximo slide

14 /* Funcao LerPilotos: leitura dos nomes e das escuderias dos pilotos - Zera a classificacao em todos os GPs e o numero total de pontos */ void LerPilotos () { int i, j; char c; fscanf (filein, "%d%c", &TabPilotos.npilotos, &c); fscanf (filein, "%d%c", &TabPilotos.npilotos, &c); for (i = 0; i < TabPilotos.npilotos; i++) { for (i = 0; i < TabPilotos.npilotos; i++) { fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein); fscanf (filein, "%c", &c); fscanf (filein, "%c", &c); for (j = 0; j < TabPilotos.npilotos; j++) for (j = 0; j < TabPilotos.npilotos; j++) TabPilotos.VetPilotos[i].Classificacao[j] = 0; TabPilotos.VetPilotos[i].Classificacao[j] = 0; TabPilotos.VetPilotos[i].TotalPontos = 0; TabPilotos.VetPilotos[i].TotalPontos = 0;}} O arquivo Formula1Entrada.txt passa a conter os pilotos e as escuderias, conforme o próximo slide

15 5 Sao Paulo Sao Paulo Londres Londres Los Angeles Los Angeles Paris Paris Tokio Tokio 16 Felipe Massa Ferrari Felipe Massa Ferrari Fernando Alonso Ferrari Fernando Alonso Ferrari Sebastian Vettel Red Bull Sebastian Vettel Red Bull Mark Webber Red Bull Mark Webber Red Bull Jenson Button McLaren Jenson Button McLaren Sergio Perez McLaren Sergio Perez McLaren Kimi Raikkonen Lotus Kimi Raikkonen Lotus Romain Grosjean Lotus Romain Grosjean Lotus Nico Rosberg Mercedes Nico Rosberg Mercedes Lewis Hamilton Mercedes Lewis Hamilton Mercedes Nico Hulkenberg Sauber Nico Hulkenberg Sauber Esteban Gutierrez Sauber Esteban Gutierrez Sauber Paul di Resta Force India Paul di Resta Force India Adrian Sutil Force India Adrian Sutil Force India Pastor Maldonado Williams Pastor Maldonado Williams Valtteri Bottas Williams Valtteri Bottas Williams Continua no próximo slide 2015 fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein); fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein);

16 /* Funcao EscreverPilotos: escrita das informacoes sobre os pilotos */ void EscreverPilotos () { int i, j; fprintf (fileout, "\n\nInformacoes sobre os %d pilotos:\n", TabPilotos.npilotos); for (i = 0; i < TabPilotos.npilotos; i++) { for (i = 0; i < TabPilotos.npilotos; i++) { fprintf (fileout, "\n%-25s", TabPilotos.VetPilotos[i].NomePiloto); fprintf (fileout, "\n%-25s", TabPilotos.VetPilotos[i].NomePiloto); fprintf (fileout, "%-20s", TabPilotos.VetPilotos[i].Escuderia); fprintf (fileout, "Classificacoes: "); fprintf (fileout, "Classificacoes: "); for (j = 0; j < TabGPs.ngps; j++) for (j = 0; j < TabGPs.ngps; j++) fprintf (fileout, "%3d", TabPilotos.VetPilotos[i].Classificacao[j]); fprintf (fileout, "%3d", TabPilotos.VetPilotos[i].Classificacao[j]); fprintf (fileout, " Total de pontos:%4d", TabPilotos.VetPilotos[i].TotalPontos); fprintf (fileout, " Total de pontos:%4d", TabPilotos.VetPilotos[i].TotalPontos); }}

17 void main () { /* Abertura dos arquivos de entrada e de saida */ /* Avisos de sobre os arquivos de entrada e saida */ /* Processamento das informacoes sobre os GPs */ LerGPs (); EscreverGPs (); EscreverGPs (); LerPilotos (); LerPilotos (); EscreverPilotos (); EscreverPilotos (); /* Fechamento da tela */ printf ("\nDigite algo para encerrar: "); getch (); } Copiar, salvar e executar

18 Exercício 9.1: Leitura e armazenamento dos resultados dos GPs Fazer uma função de nome LerResultadosGPs e colocar na função main uma chamada para ela: Fazer uma função de nome LerResultadosGPs e colocar na função main uma chamada para ela: Sugere-se para essa leitura a seguinte estratégia: Sugere-se para essa leitura a seguinte estratégia: – Para cada GP o programa escreve o seu local e – Pergunta ao operador a classificação de cada um dos pilotos, armazenando a informação em TabPilotos LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); EscreverPilotos ();

19 Exercício 9.2: Cálculo da pontuação total de cada piloto Fazer uma função de nome CalcularPontuação e colocar na função main uma chamada para ela: Fazer uma função de nome CalcularPontuação e colocar na função main uma chamada para ela: A pontuação total de cada piloto deve ser armazenada em TabPilotos, no campo TotalPontos A pontuação total de cada piloto deve ser armazenada em TabPilotos, no campo TotalPontos LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); EscreverPilotos ();

20 Exercício 9.2: Cálculo da pontuação total de cada piloto Como é bem conhecido, recebem pontos num GP os 10 primeiros classificados, segundo a tabela: Como é bem conhecido, recebem pontos num GP os 10 primeiros classificados, segundo a tabela: 1º Lugar: 25 ptos 2º Lugar: 18 ptos 3º Lugar: 15 ptos 4º Lugar: 12 ptos 5º Lugar: 10 ptos 6º Lugar: 08 ptos 7º Lugar: 06 ptos 8º Lugar: 04 ptos 8º Lugar: 02 ptos 10º Lugar: 01 ptos

21 Exercício 9.3: Ordenação decrescente da TabPilotos pelo total de pontos dos pilotos Fazer uma função de nome OrdenarTabPilotos e colocar na função main uma chamada para ela: Fazer uma função de nome OrdenarTabPilotos e colocar na função main uma chamada para ela: A ordenação pode usar uma adaptação do método Bubble- Sort, mas pode usar alternativamente algum outro método A ordenação pode usar uma adaptação do método Bubble- Sort, mas pode usar alternativamente algum outro método LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); OrdenarTabPilotos (); EscreverPilotos ();

22 Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderias A tabela de escuderias deve usar as seguintes declarações: A tabela de escuderias deve usar as seguintes declarações: struct escuderia { cadeia1 NomeEscuderia; int Pontos; }; typedef struct escuderia escuderia; struct tabelaescuderias { escuderia VetEscuderias[30]; int nescuderias; }; typedef struct tabelaescuderias tabelaescuderias; tabelaescuderias TabEscuderias;

23 Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderias Fazer três funções de nomes MontarTabEscuderias, OrdenarTabEscuderias e EscreverEscuderias, colocando na função main uma chamada para cada uma delas: Fazer três funções de nomes MontarTabEscuderias, OrdenarTabEscuderias e EscreverEscuderias, colocando na função main uma chamada para cada uma delas: LerGPs (); EscreverGPs (); LerPilotos (); LerResultadosGPs (); CalcularPontuacao (); OrdenarTabPilotos (); EscreverPilotos (); MontarTabEscuderias (); OrdenarTabEscuderias (); EscreverEscuderias ();


Carregar ppt "CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo IX Estruturas e Subprogramas sem Parâmetros."

Apresentações semelhantes


Anúncios Google