01 - struct livro{
02 - char *titulo;
03 - char *autor;
04 - int ano;
05 - int paginas;
06 - char *categoria;
07 - }
08 -
09 - struct livro mais_antigo(struct livro a, struct livro b){
10 - if(a.ano < b.ano){
11 - return a;
12 - } else {
13 - return b;
14 - }
15 - }
16 -
17 - int mesma_categoria(struct livro a, struct livro b){
18 - if(a.categoria == b.categoria)
19 - return 1;
20 - else
21 - return 0;
22 - }
23 -
24 - struct livro mais_paginas(struct livro a, struct livro b){
25 - if (a.paginas > b.paginas)
26 - return a;
27 - else
28 - return b;
29 - }
A respeito do código apresentado podemos afirmar que:
Soluções para a tarefa
Você tem um struct ( uma coleção de variáveis ) chamado livro que tem algumas propriedades. Ele armazena um array (lista) de caracteres para o nome do livro, um array de characteres para o nome do autor, uma variável do tipo int (número inteiro) para armazenar o ano, outra variável int para o número de páginas e outro array de caracteres para o nome da categoria.
Note que na linguagem C (utilizada na sua pergunta), não existem strings (variáveis de texto), apenas arrays de caracteres.
Depois há uma função que recebe 2 structs de "livro" e retorna aquele que possui o menor número na variável ano, e portanto, o mais antigo
Depois há uma função que recebe 2 structs de "livro" e retorna 1 (verdadeiro) caso as suas categorias sejam iguais, ou 0 (falso) caso as categorias sejam diferentes
Depois há uma função que recebe 2 structs de "livro" e retorna aquele que possui o maior valor dentro da variável de quantidade de páginas