Estou tentando fazer uma questão de Fila circular e gostaria de uma ajuda em como posso identificar o maior valor e a soma dos valores que estão dentro da struct.
#include <stdio.h>
#include <stdlib.h>
/* VARIÁVEIS DE CONTROLES GERAIS */
#define tamanhoFila 3
/* TDE */
typedef struct {
int placa;
int modelo[10];
int preco;
} tCarro;
/* ESTRUTURA FILA CIRCULAR */
int numeroItensFila = 0;
tCarro fila[tamanhoFila];
int inicio = -1;
int final = -1;
/* TDAs */
int cheia() {
int c = sizeof(fila)/sizeof(tCarro);
if (c == numeroItensFila) {
c = 1;
} else {
c = 0;
}
return c;
}
int vazia() {
int v = 0;
if (numeroItensFila == 0) {
return 1;
} else {
return 0;
}
}
void adicionar(tCarro valor) {
if (cheia() == 1) {
printf("Fila cheia! \n");
} else {
if (final == -1) {
final = final + 1;
inicio = final;
} else {
if (final == (tamanhoFila - 1)) {
final = 0;
} else {
final = final + 1;
}
}
numeroItensFila = numeroItensFila + 1;
fila[final] = valor;
}
}
void remover () {
if (vazia() == 1) {
printf("Fila vazia! \n");
} else {
if (inicio == (tamanhoFila - 1)) {
inicio = 0;
} else {
inicio = inicio + 1;
}
numeroItensFila = numeroItensFila - 1;
}
}
void listar() {
if (vazia() == 1) {
printf("Fila vazia! \n");
} else {
int i = 1;
int p = inicio;
for (i = 1; i <= numeroItensFila; i++) {
printf("PLACA: %i \t MODELO: %i \t PRECO: %i \n", fila[p].placa, fila[p].modelo, fila[p].preco);
if (p == (tamanhoFila - 1)) {
p = 0;
} else {
p = p + 1;
}
}
}
}
int main(int argc, char *argv[]) {
int opc = 0;
while(opc != 9) {
printf(" \n");
printf(":: FILA ALUNOS ::.. \n");
printf("1. adicionar \n");
printf("2. remover \n");
printf("3. listar \n");
printf("4. somar valores \n");
printf("5. maior valor");
printf("9. sair\n");
printf("Dig. opcao desejada: \n");
scanf("%d", &opc);
if (opc == 1) {
tCarro novo;
scanf("%i", &novo.placa);
scanf("%i", &novo.modelo);
scanf("%i", &novo.preco);
adicionar(novo);
} else if (opc == 2) {
remover();
} else if (opc == 3) {
listar();
}
}
return 0;
}