Tenho que criar um programa em c porém encontrei alguns problemas
anexarei alguns criterios que me deram
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <conio.h>
typedef struct {
int codigo;
char titulo[100];
float preco;
}LIVRO;
//-----------------------------------------------------------------------------------------------------------------
typedef struct {
int Codvenda;
int Codlivro;
char data[11];
int qtd;
float Valortotal;
}VENDA;
//------------------------------------------------------------------------------------------------------------------
int pos_lv()
{
LIVRO livros;
int qnt = 0;
FILE *pLivros;
pLivros = fopen("livros.txt","r");
fread(&livros, sizeof(LIVRO), 1, pLivros);
while(!feof(pLivros))
{
fread(&livros, sizeof(LIVRO), 1, pLivros);
qnt+=1;
}
fclose(pLivros);
return qnt;
}
int pos_vd()
{
VENDA Vendas;
int qnt = 0;
FILE *pVendas;
pVendas = fopen("vendas.txt","r");
fread(&Vendas,sizeof(VENDA),1,pVendas);
while(!feof(pVendas))
{
fread(&Vendas,sizeof(VENDA),1,pVendas);
qnt +=1;
}
fclose(pVendas);
return qnt;
}
//------------------------------------------------------------------------------------------------------------------
void Cadastrarlivros()
{
LIVRO Livros;
system("cls");
printf("\n------------------------------------------------------------------------------");
printf("\n Cadastro de livros");
printf("\n------------------------------------------------------------------------------");
Livros.codigo = pos_lv() + 1;
printf("\n Código: %d", Livros.codigo);
fflush(stdin);
printf("\n Título: ");
gets(Livros.titulo);
printf(" Preço: ");
scanf("%f",&Livros.preco);
FILE *pLivros;
pLivros = fopen("livros.txt","a");
fwrite(&Livros, sizeof(LIVRO), 1, pLivros);
fclose(pLivros);
}
void mostratodososlivros()
{
LIVRO Livros;
int i,lcod;
float *plpreco = &Livros.preco;
int *plcod = &Livros.codigo;
char *pltitu = &Livros.titulo;
system("cls");
printf("\n-------------------------------------------------------------------------------------------");
printf("\nTodos os livros cadastrados");
printf("\n-------------------------------------------------------------------------------------------");
FILE *pLivros;
pLivros = fopen("livros.txt","r");
for(i=0;i>= *plcod;i++)
{
printf("\nCódigo do Livros:%d",*plcod);
printf("\nTítulo..........:%d",*pltitu);
printf("\nPreço...........:%d",*plpreco);
plcod++;
pltitu++;
plpreco++;
}
fclose(pLivros);
}
//------------------------------------------------------------------------------------------------------------------
void registrovenda()
{
LIVRO Livros;
VENDA Vendas;
float* pend;
float preco;
int quant,cont,contmt,codrec,plcod;
system("cls");
printf("\n------------------------------------------------------------------------------");
printf("\n Registro de vendas");
printf("\n------------------------------------------------------------------------------");
Vendas.Codvenda = pos_vd() +1;
printf("\n Código da venda: %d", Vendas.Codvenda);
fflush(stdin);
printf("\n Digite o código do livro:");
scanf("%d", &Vendas.Codlivro, &codrec);
fflush(stdin);
printf("\n Digite a data da venda: ");
gets(Vendas.data);
puts(" Digite a quantidade de Livros: ");
scanf("%d",&Vendas.qtd, &quant);
pend = &Livros.preco;
codrec = codrec-1;
for(cont= 0;cont>=codrec;cont++)
{
pend++;
}
preco= *pend;
for(contmt=0;contmt<=quant;contmt++)
{
preco+= preco;
}
Vendas.Valortotal= preco;
printf("O valor total da venda é: %f",preco);
FILE *pVendas;
pVendas = fopen("vendas.txt","a");
fwrite(&Vendas, sizeof(VENDA), 1, pVendas);
fclose(pVendas);
}
void mostratodasasvendas()
{
VENDA Vendas;
char conteudo[100];
system("cls");
printf("\n-------------------------------------------------------------------------------------------");
printf("\nDados de todas as vendas realizadas");
printf("\n-------------------------------------------------------------------------------------------");
FILE *pVendas;
pVendas = fopen("vendas.txt","r");
fread(&conteudo, sizeof(char), 100, pVendas);
printf("\nO CONTEÚDO DO ARQUIVO É:\n %s \n", conteudo);
fclose(pVendas);
}
void sair()
{
return;
}
void menu()
{
int opsel;
setlocale(LC_ALL, "Portuguese");
printf("---------------------------------------------------------------------------------");
printf("\n MENU DE OPÇÕES DO SISTEMA");
printf("\n---------------------------------------------------------------------------------");
printf("\n [1] Cadastrar livros");
printf("\n [2] Mostrar todos os dados de um livro pelo título");
printf("\n [3] Consultar todos os dados de todos os livros");
printf("\n [4] Registro de vendas");
printf("\n [5] Consultar todos os dados de uma venda por título do livro");
printf("\n [6] Consultar todos os dados de uma venda por período e valor total recebido");
printf("\n [7] Mostrar todos os dados de todas as vendas realizadas");
printf("\n [8] Sair\n");
printf("Opção selecionada:");
scanf("%d", &opsel);
//Analisa o número digitadodvendao e abre a função correspondente
switch(opsel)
{
case 1:
Cadastrarlivros();
break;
case 3:
mostratodososlivros();
break;
case 4:
registrovenda();
break;
case 7:
mostratodasasvendas();
break;
case 8:
sair();
break;
default:
printf("Opção não encontrada.");
}
}
int main()
{
menu();
return 0;
}
Avaliação A1 - Linguagem de Programação 2020-01 - PROTOCOLO DE APRESENTAÇÃO.pdf Avaliação A1 - Linguagem de Programação 2020-01.pdf
adicionado 4 minutos depois
O que não funciona:
1 para registrar a venda tenho que colocar o valor total da venda que é o preço do livro vezes a quantia, porém terei varios livros registrados e para isso pensei em criar um ponteiro para o campo preço da struct e ai avançar na memoria o numero de vezes x no caso o codigo do livro, e em seguida somar seu preço n vezes até chegar ao quantia de livros que foi comprada.
2 tentei printar todos os livros cadastrados mas acaba printando endereço de memória ao envez do codigo titulo e preço.
adicionado 5 minutos depois
sou iniciante então devem conter diversas coisas erradas