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

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

Embed Size (px)

Citation preview

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

CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO

Aulas Práticas – 2013Aulas Práticas – 2013

Capítulo IX Capítulo IX

Estruturas e Estruturas e Subprogramas sem Subprogramas sem

ParâmetrosParâmetros

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

Tema do Lab 9: Campeonato de Fórmula 1Tema do Lab 9: Campeonato de Fórmula 1

Ler as informações sobre o campeonato e Ler as informações sobre o campeonato e montar as seguintes montar as seguintes tabelastabelas: :

– Tabela dos Tabela dos locaislocais dos grandes prêmios dos grandes prêmios

– Tabela de informações sobre os Tabela de informações sobre os pilotospilotos: : nome, escuderia, classificação em cada nome, escuderia, classificação em cada grande prêmio e total de pontos, ordenada grande prêmio e total de pontos, ordenada decrescentemente pelo total de pontosdecrescentemente pelo total de pontos

– Tabela de informações sobre as Tabela de informações sobre as escuderiasescuderias: : nome e total de pontos, ordenada nome e total de pontos, ordenada decrescentemente pelo total de pontosdecrescentemente pelo total de pontos

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

Tema do Lab 9: Campeonato de Fórmula 1Tema do Lab 9: Campeonato de Fórmula 1

Os locais dos GP’s, os nomes dos pilotos e suas Os locais dos GP’s, os nomes dos pilotos e suas escuderias devem ser lidos de um arquivoescuderias devem ser lidos de um arquivo

Os resultados de cada GP devem ser fornecidos Os resultados de cada GP devem ser fornecidos pelo operador pelo operador

O relatório completo do campeonato, com a O relatório completo do campeonato, com a classificação dos pilotos em cada GP, com a classificação dos pilotos em cada GP, com a pontuação final e com a classificação final dos pontuação final e com a classificação final dos pilotos e das escuderias, deve ser escrito num pilotos e das escuderias, deve ser escrito num arquivoarquivo

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

Programa 9.1: Montagem da tabela de locais Programa 9.1: Montagem da tabela de locais dos grandes prêmiosdos grandes prêmios

typedef char cadeia1[16];typedef char cadeia1[16];

struct tabelagps {struct tabelagps {

cadeia1 VetGPs[30]; int ngps;cadeia1 VetGPs[30]; int ngps;

};};

typedef struct tabelagps tabelagps;typedef struct tabelagps tabelagps;

tabelagps TabGPs;tabelagps TabGPs;

Sejam as declarações à esquerda

Elas implementam a seguinte estrutura:

local

0

1

2

3

.

.

.

.

.

.

ngps

VetGPs

TabGPs

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

#include <stdio.h>#include <stdio.h>

#include <conio.h>#include <conio.h>

#include <string.h>#include <string.h>

typedef char cadeia1[16], cadeia2[21];typedef char cadeia1[16], cadeia2[21];

/* Estrutura para a tabela de locais dos GPs *//* Estrutura para a tabela de locais dos GPs */

struct tabelagps {struct tabelagps {

cadeia1 VetGPs[30]; int ngps;cadeia1 VetGPs[30]; int ngps;

};};

typedef struct tabelagps tabelagps;typedef struct tabelagps tabelagps;

/* Variaveis globais *//* Variaveis globais */

tabelagps TabGPs;tabelagps TabGPs;

FILE *filein, *fileout;FILE *filein, *fileout;

Copiar, salvar e executar o programa à esquerda

Continua no próximo slide

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

/* Funcao LerGPs: leitura dos locais dos GPs *//* Funcao LerGPs: leitura dos locais dos GPs */

void LerGPs () {void LerGPs () {

int i; char c, d;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<enter>Sao Paulo <enter>Londres <enter>Los Angeles <enter>Paris <enter>Tokio <enter>15

O Borland não completa com espaços em branco até interar 15 caracteres

Leitura do <enter>

Leitura de no máximo 15 (16-1) caracteres

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

/* Funcao EscreverGPs: escrita dos locais dos GPs *//* Funcao EscreverGPs: escrita dos locais dos GPs */

void EscreverGPs () {void EscreverGPs () {

int i;int i;

fprintf (fileout, “\n\nLocais dos %d GP's:\n", TabGPs.ngps);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

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

/* funcao main *//* funcao main */

void main () {void main () {

/* Abertura dos arquivos de entrada e de saida *//* Abertura dos arquivos de entrada e de saida */

filein = fopen ("Formula1Entrada.txt", "r");filein = fopen ("Formula1Entrada.txt", "r");

fileout = fopen ("Formula1Saida", "w");fileout = fopen ("Formula1Saida", "w");

fprintf (fileout, "CAMPEONATO DE FORMULA 1 - RESULTADOS");fprintf (fileout, "CAMPEONATO DE FORMULA 1 - RESULTADOS");

/* Avisos de sobre os arquivos de entrada e saida *//* Avisos de sobre os arquivos de entrada e saida */

printf ("Processamento das informacoes de um Campeonato de Formula 1\n\n");printf ("Processamento das informacoes de um Campeonato de Formula 1\n\n");

printf ("\tArquivo Formula1Entrada: locais, pilotos e escuderias dos GPs\n\n");printf ("\tArquivo Formula1Entrada: locais, pilotos e escuderias dos GPs\n\n");

printf ("\tArquivo Formula1Saida: Relatorio completo do campeonato\n\n");printf ("\tArquivo Formula1Saida: Relatorio completo do campeonato\n\n");

/* Processamento das informacoes sobre os GPs *//* Processamento das informacoes sobre os GPs */

LerGPs ();LerGPs ();

EscreverGPs ();EscreverGPs ();

/* Fechamento da tela *//* Fechamento da tela */

printf ("\nDigite algo para encerrar: "); getch ();printf ("\nDigite algo para encerrar: "); getch ();

}}

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

No vídeo:No vídeo:

Processamento das informacoes de um Campeonato de Formula 1Processamento das informacoes de um Campeonato de Formula 1

Arquivo Formula1Entrada: locais, pilotos e escuderias dos GPsArquivo Formula1Entrada: locais, pilotos e escuderias dos GPs

Arquivo Formula1Saida: Relatorio completo do campeonatoArquivo Formula1Saida: Relatorio completo do campeonato

Digite algo para encerrar:Digite algo para encerrar:

No arquivo Formula1Saida:No arquivo Formula1Saida:

CAMPEONATO DE FORMULA 1 - RESULTADOSCAMPEONATO DE FORMULA 1 - RESULTADOS

Locais dos 5 GP's:Locais dos 5 GP's:

Sao Paulo Sao Paulo Londres Londres Los Angeles Los Angeles Paris Paris TokioTokio

Resultado da execução

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

Programa 9.2: Montagem da tabela dos Programa 9.2: Montagem da tabela dos pilotos participantes do campeonato de pilotos participantes do campeonato de Fórmula 1Fórmula 1

struct piloto {struct piloto {

cadeia2 NomePiloto; cadeia1 Escuderia;cadeia2 NomePiloto; cadeia1 Escuderia;

int Classificacao[30], TotalPontos;int Classificacao[30], TotalPontos;

};};

typedef struct piloto piloto;typedef struct piloto piloto;

struct tabelapilotos {struct tabelapilotos {

piloto VetPilotos[30]; int npilotos;piloto VetPilotos[30]; int npilotos;

};};

typedef struct tabelapilotos tabelapilotos;typedef struct tabelapilotos tabelapilotos;

tabelapilotos TabPilotos;tabelapilotos TabPilotos;

Sejam as declarações à esquerda

Elas implementam a estrutura a seguir

NomePiloto Escuderia

tipo piloto

TotalPontos

Classificacao

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

NomePiloto

Escuderia

Classificacao TotalPontos

0

1

2

3

4

. . .

. . .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

npilotos

VetPilotos

TabPilotos

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

/* Estrutura para a tabela de locais dos GPs *//* Estrutura para a tabela de locais dos GPs */

struct tabelagps {- - - - -};struct tabelagps {- - - - -};

typedef struct tabelagps tabelagps;typedef struct tabelagps tabelagps;

/* Estrutura para as informacoes sobre um piloto participante dos /* Estrutura para as informacoes sobre um piloto participante dos GPs */GPs */

struct piloto {struct piloto {

cadeia2 NomePiloto; cadeia1 Escuderia;cadeia2 NomePiloto; cadeia1 Escuderia;

int Classificacao[30], TotalPontos;int Classificacao[30], TotalPontos;

};};

typedef struct piloto piloto;typedef struct piloto piloto;

/* Estrutura para a tabela de pilotos participantes dos GPs *//* Estrutura para a tabela de pilotos participantes dos GPs */

struct tabelapilotos {struct tabelapilotos {

piloto VetPilotos[30]; int npilotos;piloto VetPilotos[30]; int npilotos;

};};

typedef struct tabelapilotos tabelapilotos;typedef struct tabelapilotos tabelapilotos;

Fazer no Programa 9.1 as alterações que se seguem

Continua no próximo slide

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

/* Variaveis globais *//* Variaveis globais */

tabelagps TabGPs;tabelagps TabGPs;

tabelapilotos TabPilotos;tabelapilotos TabPilotos;

FILE *filein, *fileout;FILE *filein, *fileout;

/* Funcao LerGPs: leitura dos locais dos GPs *//* Funcao LerGPs: leitura dos locais dos GPs */

void LerGPs () {- - - - -}void LerGPs () {- - - - -}

/* Funcao EscreverGPs: escrita dos locais dos GPs *//* Funcao EscreverGPs: escrita dos locais dos GPs */

void EscreverGPs () {- - - - -}void EscreverGPs () {- - - - -}

Continua no próximo slide

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

/* Funcao LerPilotos: leitura dos nomes e das escuderias dos /* Funcao LerPilotos: leitura dos nomes e das escuderias dos pilotos - Zera a classificacao em todos os GPs e o numero pilotos - Zera a classificacao em todos os GPs e o numero total de pontos */total de pontos */

void LerPilotos () {void LerPilotos () {

int i, j; char c;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

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

5<enter>5<enter>

Sao Paulo <enter>Sao Paulo <enter>

Londres <enter>Londres <enter>

Los Angeles <enter>Los Angeles <enter>

Paris <enter>Paris <enter>

Tokio Tokio <enter><enter>

16<enter>16<enter>

Felipe Massa Ferrari <enter>Felipe Massa Ferrari <enter>

Fernando Alonso Ferrari <enter>Fernando Alonso Ferrari <enter>

Sebastian Vettel Red Bull <enter>Sebastian Vettel Red Bull <enter>

Mark Webber Red Bull <enter>Mark Webber Red Bull <enter>

Jenson Button McLaren <enter>Jenson Button McLaren <enter>

Sergio Perez McLaren <enter>Sergio Perez McLaren <enter>

Kimi Raikkonen Lotus <enter>Kimi Raikkonen Lotus <enter>

Romain Grosjean Lotus <enter>Romain Grosjean Lotus <enter>

Nico Rosberg Mercedes <enter>Nico Rosberg Mercedes <enter>

Lewis Hamilton Mercedes <enter>Lewis Hamilton Mercedes <enter>

Nico Hulkenberg Sauber <enter>Nico Hulkenberg Sauber <enter>

Esteban Gutierrez Sauber <enter>Esteban Gutierrez Sauber <enter>

Paul di Resta Force India <enter>Paul di Resta Force India <enter>

Adrian Sutil Force India <enter>Adrian Sutil Force India <enter>

Pastor Maldonado Williams <enter>Pastor Maldonado Williams <enter>

Valtteri Bottas Williams <enter>Valtteri Bottas Williams <enter>

Continua no próximo slide

20 15

fgets (TabPilotos.VetPilotos[i].NomePiloto, 21, filein);

fgets (TabPilotos.VetPilotos[i].Escuderia, 16, filein);

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

/* Funcao EscreverPilotos: escrita das informacoes sobre os /* Funcao EscreverPilotos: escrita das informacoes sobre os pilotos */pilotos */

void EscreverPilotos () {void EscreverPilotos () {

int i, j;int i, j;

fprintf (fileout, "\n\nInformacoes sobre os %d pilotos:\n",fprintf (fileout, "\n\nInformacoes sobre os %d pilotos:\n",

TabPilotos.npilotos);TabPilotos.npilotos);

for (i = 0; i < TabPilotos.npilotos; i++) {for (i = 0; i < TabPilotos.npilotos; i++) {

fprintf (fileout, "\n%-25s", fprintf (fileout, "\n%-25s",

TabPilotos.VetPilotos[i].NomePiloto);TabPilotos.VetPilotos[i].NomePiloto);

fprintf (fileout, "%-20s", fprintf (fileout, "%-20s", TabPilotos.VetPilotos[i].Escuderia);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", fprintf (fileout, "%3d",

TabPilotos.VetPilotos[i].Classificacao[j]);TabPilotos.VetPilotos[i].Classificacao[j]);

fprintf (fileout, " Total de pontos:%4d", fprintf (fileout, " Total de pontos:%4d", TabPilotos.VetPilotos[i].TotalPontos);TabPilotos.VetPilotos[i].TotalPontos);

}}

}}

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

void main () {void main () {

/* Abertura dos arquivos de entrada e de saida *//* Abertura dos arquivos de entrada e de saida */

- - - - -- - - - -

/* Avisos de sobre os arquivos de entrada e saida *//* Avisos de sobre os arquivos de entrada e saida */

- - - - -- - - - -

/* Processamento das informacoes sobre os GPs *//* Processamento das informacoes sobre os GPs */

LerGPs ();LerGPs ();

EscreverGPs ();EscreverGPs ();

LerPilotos ();LerPilotos ();

EscreverPilotos ();EscreverPilotos ();

/* Fechamento da tela *//* Fechamento da tela */

printf ("\nDigite algo para encerrar: "); getch ();printf ("\nDigite algo para encerrar: "); getch ();

}}Copiar, salvar e executar

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

Exercício 9.1: Leitura e armazenamento dos Exercício 9.1: Leitura e armazenamento dos resultados dos GP’sresultados dos GP’s

Fazer uma função de nome Fazer uma função de nome LerResultadosGPsLerResultadosGPs e e colocar na função colocar na função main main uma chamada para ela: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 ePara cada GP o programa escreve o seu local e

– Pergunta ao operador a classificação de cada Pergunta ao operador a classificação de cada um dos pilotos, armazenando a informação em um dos pilotos, armazenando a informação em TabPilotosTabPilotos

LerGPs ();EscreverGPs ();LerPilotos ();LerResultadosGPs ();EscreverPilotos ();

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

Exercício 9.2: Cálculo da pontuação total de Exercício 9.2: Cálculo da pontuação total de cada pilotocada piloto

Fazer uma função de nome Fazer uma função de nome CalcularPontuaçãoCalcularPontuação e colocar na função e colocar na função main main uma chamada para ela:uma chamada para ela:

A pontuação total de cada piloto deve ser A pontuação total de cada piloto deve ser armazenada em armazenada em TabPilotosTabPilotos, no campo , no campo TotalPontosTotalPontos

LerGPs ();EscreverGPs ();LerPilotos ();LerResultadosGPs ();CalcularPontuacao ();EscreverPilotos ();

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

Exercício 9.2: Cálculo da pontuação total de Exercício 9.2: Cálculo da pontuação total de cada pilotocada piloto

Como é bem conhecido, recebem pontos num Como é bem conhecido, recebem pontos num GP os 10 primeiros classificados, segundo a GP os 10 primeiros classificados, segundo a tabela:tabela: 1º Lugar: 25

ptos2º Lugar: 18 ptos3º Lugar: 15 ptos4º Lugar: 12 ptos5º Lugar: 10 ptos6º Lugar: 08 ptos7º Lugar: 06 ptos8º Lugar: 04 ptos8º Lugar: 02 ptos10º Lugar: 01 ptos

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

Exercício 9.3: Ordenação decrescente da Exercício 9.3: Ordenação decrescente da TabPilotos pelo total de pontos dos pilotosTabPilotos pelo total de pontos dos pilotos

Fazer uma função de nome Fazer uma função de nome OrdenarTabPilotosOrdenarTabPilotos e colocar na função e colocar na função main main uma chamada para ela:uma chamada para ela:

A ordenação pode usar uma adaptação do A ordenação pode usar uma adaptação do método Bubble-Sort, mas pode usar método Bubble-Sort, mas pode usar alternativamente algum outro métodoalternativamente algum outro método

LerGPs ();EscreverGPs ();LerPilotos ();LerResultadosGPs ();CalcularPontuacao ();OrdenarTabPilotos ();EscreverPilotos ();

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

Exercício 9.4: Montagem, ordenação e Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderiasescrita de uma tabela de escuderias

A tabela de escuderias deve usar as seguintes A tabela de escuderias deve usar as seguintes declarações:declarações:

struct escuderia {struct escuderia {

cadeia1 NomeEscuderia; int Pontos;cadeia1 NomeEscuderia; int Pontos;

};};

typedef struct escuderia escuderia;typedef struct escuderia escuderia;

struct tabelaescuderias {struct tabelaescuderias {

escuderia VetEscuderias[30]; int nescuderias;escuderia VetEscuderias[30]; int nescuderias;

};};

typedef struct tabelaescuderias tabelaescuderias;typedef struct tabelaescuderias tabelaescuderias;

tabelaescuderias TabEscuderias;tabelaescuderias TabEscuderias;

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

Exercício 9.4: Montagem, ordenação e Exercício 9.4: Montagem, ordenação e escrita de uma tabela de escuderiasescrita de uma tabela de escuderias

Fazer três funções de nomes Fazer três funções de nomes MontarTabEscuderiasMontarTabEscuderias, , OrdenarTabEscuderiasOrdenarTabEscuderias e e EscreverEscuderiasEscreverEscuderias, colocando na função , colocando na função main main uma chamada para cada uma delas:uma chamada para cada uma delas:

LerGPs ();EscreverGPs ();LerPilotos ();LerResultadosGPs ();CalcularPontuacao ();OrdenarTabPilotos ();EscreverPilotos ();MontarTabEscuderias ();OrdenarTabEscuderias ();EscreverEscuderias ();