Cadastro Aviao
Trabalho Universitário: Cadastro Aviao. Pesquise 862.000+ trabalhos acadêmicosPor: al.alyne • 11/9/2013 • 781 Palavras (4 Páginas) • 980 Visualizações
Registros e Structs
Um registro (= record) é uma coleção de várias variáveis, possivelmente de tipos diferentes. Na linguagem C, registros são conhecidos como structs (abreviatura de structures).
Definição e manipulação de structs
O exemplo abaixo declara um registro x com três campos (ou membros) inteiros:
struct {
int dia;
int mes;
int ano;
} x;
É uma boa ideia dar um nome ao tipo de registro. No nosso exemplo, dma parece um nome apropriado:
struct dma {
int dia;
int mes;
int ano;
};
struct dma x; /* um registro x do tipo dma */
struct dma y; /* um registro y do tipo dma */
É fácil atribuir valores aos campos de um registro:
x.dia = 31;
x.mes = 8;
x.ano = 1998;
Exemplo: A função abaixo recebe a data de início de um evento e a duração do evento em dias. Ela devolve a data de fim do evento.
struct dma fim_evento (struct dma datainicio, int duracao) {
struct dma datafim;
. . .
. . .
datafim.dia = ...
datafim.mes = ...
datafim.ano = ...
return datafim;
}
O código foi omitido porque é um tanto enfadonho: deve levar em conta a existência de meses com 31 dias, de meses com 30 dias, com 29 dias etc. Eis como essa função poderia ser usada:
int main( void) {
struct dma a, b;
int d;
scanf( "%d %d %d", &a.dia, &a.mes, &a.ano);
scanf( "%d", &d);
b = fim_evento( a, d);
printf( "%d %d %d\n", b.dia, b.mes, b.ano);
return EXIT_SUCCESS;
}
Exercícios
Complete o código da função fim_evento acima.
Escreva uma função que receba dois structs do tipo dma, cada um representando uma data válida, e devolva o número de dias que decorreram entre as duas datas.
Escreva uma função que receba um número inteiro que representa um intervalo de tempo medido em minutos e devolva o correspondente número de horas e minutos (por exemplo, converte 131 minutos em 2 horas e 11 minutos). Use uma struct como a seguinte:
struct hm {
int horas;
int minutos;
};
Structs e ponteiros
Cada registro tem um endereço na memória
...