-Fazer um programa que cria uma estrutura livro, que contém os elementos título, ano de edição, número de páginas e preço. Criar uma variável desta estrutura que é um vetor de elementos. Ler os valores para a estrutura e imprimir a média do número de páginas do livros. Além disso mostrar os dados do livro com maior preço e menor preço, inclusive se houver mais de um livro com o mesmo preço.
Tô iniciando agora em struct, e, dada a questão, tentei montar um programa que seguisse operando o que ela pede, mas por algum motivo que n consigo identificar, o programa só lê o título do primeiro livro. Estou usando o Dev C++, escrevendo em C, gostaria que alguém me ajudasse a identificar o problema (Irei publicar o código por completo para melhor visualização, pontuando o que fiz em cada pedaço).
#include <stdio.h>
#define T 2
int main () {
struct dados {
char titulo[71];
int ano;
int pag;
float preco;
};
struct dados livro[T]; // Declarando estrutura e variáveis.
int i;
float mediap = 0.0;
float maior = 0.0, menor = 9999999999999999.9;
for (i = 0; i < T; i++) { // Entrada de dados.
printf ("\nLivro %d:\n", i + 1);
printf ("\n\tInsira o titulo do livro: "); // JUSTO AQUI, RECEBO APENAS O PRIMEIRO TÍTULO.
fgets (livro[i].titulo, 71, stdin);
printf ("\n\tInsira o ano de edicao: ");
scanf ("%d", &livro[i].ano);
printf ("\n\tInsira o numero de paginas: ");
scanf ("%d", &livro[i].pag);
printf ("\n\tInsira o preco no mercado: ");
scanf ("%f", &livro[i].preco);
if (livro[i].preco < menor)
menor = livro[i].preco;
if (livro[i].preco > maior)
maior = livro[i].preco;
mediap = mediap + livro[i].pag;
}
//system ("cls"); // Limpa a tela
printf ("\n\nA media do numero de paginas dos livros: %.2f\n", (float)mediap/T); // Saída de dados
printf ("\nO maior preco dentre os livros: %.2f\n", maior);
printf ("\nO menor preco dentre os livros: %.2f\n", menor);
return 0;
}
Segue o programa que tentei fazer: