
paulo1205
(usa Ubuntu)
Enviado em 14/10/2018 - 14:52h
Não entendi muito bem o propósito do programa, então eu vou me deter mais no código que você mostrou.
Você parece ter parado bem no início mesmo, pois nem mesmo colocou no código nenhuma função — nem mesmo
main(). Isso é muito pouco até para que possamos dar uma ajuda mais direcionada.
Pela descrição do problema, não me pareceu que você precise de uma estrutura para os clientes. Tome cuidado para não gastar tempo tentando fazer mais do que o necessário. (Se você tiver omitido a parte do enunciado que faz com que ela seja relevante, ignore o comentário, mas não o conselho.)
Na estrutura que você chamou de
registro (que, por sinal, é um nome genérico demais, não descrevendo o que o tipo de dados realmente representa), se valer sempre a relação de que o troco é igual ao valor pago menos o valor cobrado, então você não precisa guardar os três valores ao mesmo tempo, pois o terceiro sempre poderá ser calculado a partir dos outros dois. Você só vai precisar dos três se existir alguma outra relação, que seria um quarto valor, que precise dos três ao mesmo tempo para ser inferida (por exemplo: um desconto, multas, arredondamento de troco etc.).
O uso de que você faz de
typedef no seu programa é geralmente considerado um mau uso em C. Quando as estruturas têm nomes próprios (como têm as suas) e, principalmente, quando elas são enxergadas como estruturas pelo programa (isto é: quando os campos que a compõem são manipulados individualmente), a boa prática do C geralmente recomenda que você não use
typedefs, mas que deixe claro que está usando dados cujos tipos são estrutura, explicitamente usando, por exemplo, “
struct fila nome_da_variavel” em lugar de “
Fila nome_da_variavel”.
(Eu creio que o vício de fazer os estudantes (ab)usarem de
typedef em C é uma herança de linguagens como Pascal e da falta de real intimidade com a linguagem por parte dos professores dos cursos (que possivelmente são velhos usuários de Pascal). Em Pascal, os
records (análogos aos
structs do C) não tinham nomes próprios, e o programador era
obrigado a usar declarações de tipos sempre que queria usar uma determinada variedade
record em mais de um ponto do programa. Como o C permite dar nome a cada estrutura num espaço de nomes reservado especificamente para isso (que é separado do espaço de nomes usado por outros elementos da sintaxe da linguagem), é redundante criar também um tipo para ela no espaço de nomes geral.
Outra coisa que eu notei é que você declarou os nomes
caixa1,
caixa2 e
caixa3 como dados do tipo
struct fila mas, mais tarde, tentou usá-los como se fossem nomes de funções. Isso obviamente não vai funcionar.