Ajuda em C

2 respostas
programação
R
Na void chamada Registro Venda preciso printar o valor total da venda só que ele não realiza, o programa foi criado de acordo com requisitos do meu professor e ainda não está pronto se puderem ajuda.

#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;
//float *plpreco = Livros.preco;
int *plcod;
char *pltitu = Livros.titulo;

system("cls");
printf("\n-------------------------------------------------------------------------------------------");
printf("\nTodos os livros cadastrados");
printf("\n-------------------------------------------------------------------------------------------");
FILE *pLivros;
pLivros = fopen("livros.txt","r");
//for(lcod=Livros.codigo,i=0,i!=lcod,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 pLpreco;
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++;
    }
pLpreco=(*pend);
for(contmt=0;contmt<=quant;contmt++)
{
    pLpreco+=pLpreco;
}
Vendas.Valortotal=(pLpreco);
printf("O valor total da venda é: %f",pLpreco);

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;

}

2 Respostas

L

Entendi a questão, mas não entendi onde está o problema. Esse problema é de semântica ou sintaxe? Copila o programa e deixe o debugador fazer o trabalho dele, depois mostre o bloco que o debugador acusa falha.

L

Por incrível que pareça, só foi eu trocar as aspas que você usou por aspas duplas que rodou, observe as alterações. O que acho mais estranho é que as suas aspas parecem serem as aspas duplas que conhecemos, mas não são. Copie o código abaixo, cole no seu editor e use a combinação de teclas para identar pra ver se não roda.

#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;
//float *plpreco = Livros.preco;
int *plcod;
char *pltitu = Livros.titulo;

system("cls");
printf("\n-------------------------------------------------------------------------------------------");
printf("\nTodos os livros cadastrados");
printf("\n-------------------------------------------------------------------------------------------");
FILE *pLivros;
pLivros = fopen("livros.txt", "r");
//for(lcod=Livros.codigo,i=0,i!=lcod,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 pLpreco;
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++;
}
pLpreco = (*pend);
for (contmt = 0; contmt <= quant; contmt++)
{
    pLpreco += pLpreco;
}
Vendas.Valortotal = (pLpreco);
printf("O valor total da venda é: %f", pLpreco);

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()

{

setlocale(LC_ALL, Portuguese);

menu();

return 0;

}
Criado 9 de junho de 2020
Ultima resposta 12 de jun. de 2020
Respostas 2
Participantes 3