O programinha q eu fiz ta tanto uns erros mas não consigo consertar será q alguém pode me falar como arrumar?
#include <stdio.h>
#define NULL 0
# define VERD 1
/* criar um registro de dados contendo registros de clientes */
typedef struct {
int mes;
int dia;
int ano;
} data;
typedef struct {
char nome [80];
char endereco[80];
char cidade;
int num_conta; /* (inteiro positivo) */
char tipo_conta; /* N (normal), A (atras.) ou I (inad.) */
float saldoant; /* (quantiadade não negativa) */
float saldonovo;
float pagto;
data ultpag;
} registro;
FILE *ptant, *ptnovo; /* ponteiro p/ a estrutura FILE */
int dia, mes, ano; /* declaracao de variaveis globais*/
main()
{
int flag = VERD; /* declaracao de variavel local*/
registro cliente; /* declaracao de variavel estrutura*/
registro learq(registro cliente); /* decl funcao*/
registro atualiza(registro cliente);
void garvaarq (registro cliente);
/* abrir um novo arquivo de dados para gravacao apemas*/
fpt = fopen ("registro.dat","w");
/* abrir arquivos de dados*/
if ((ptant = fopen ("registro.ant","r")) == NULL){
printf("\nERRO - O arquivo de leitura não pode");
printf("ser aberto\n");
}
ptnovo = fopen("registro.nov","w");
/* ler a data corrente */
printf("Sistema Bamcario - Atualizacao\n\n");
printf ("Digite a data de hoje (dd/mm/aaaa):");
scanf ("%d%d%d",&dia, &mes, &ano
/* loop principal */
while (flag) {
/* ler um nome do arquivo antigo e gravar no novo arquivo*/
fscan(ptold, "%[^/n]",cliente.nome);
fprintf(ptnovo, "\n%s\n", cliente.nome);
/* testar a condicao de termino */
if (strcmpi(cliente.nome, "FIM")==0)
break;
/* ler o resto dos dados do arquivo de dados antigo*/
cliente=learq(cliente);
/* atualizar os dados */
cliente = atualiza(cliente);
/* gravar os dados atualizados no novo arquivo de dados*/
gravarq(cliente){;
}
fclose(ptant){;
fclose(ptnovo);
}
registro learq (registro cliente){ /* ler o resto dos dados do arquivo antigo*/
{
fscanf(ptold, "%[^\n]", cliente.endereco);
fscanf(ptold, "%[^\n]", cliente.cidade);
fscanf(ptold, " &d", cliente.num_conta);
fscanf(ptold, " &c", cliente.tipo_conta);
fscanf(ptold, " &f", cliente.saldoant);
fscanf(ptold, " &f", cliente.saldonovo);
fscanf(ptold, " &f", cliente.pagto);
fscanf(ptold, " %d%d%d", &cliente.ultpag.mes,
&cliente.ultpag.mes,
&cliente.ultpag.ano);
return(cliente);
}
registro atualiza(registro cliente) /*solicitar novas info, atualizar o registro e exibir */
{
printf("\n\nNome: %s", cliente.nome);
printf(" Numero da conta: %d\n", cliente.num_conta);
printf("\nSaldo Anterior: %7.2f", cliente.saldoant);
printf(" Pagamento Corrente: ");
scanf("&f", &cliente.pagto);
if (cliente.pagto > 0) {
cliente.ultpag.dia = dia;
cliente.ultpag.mes = mes;
cliente.ultpag.ano = ano;
cliente.tipo_conta =
(cliente.pagto < 0.1 * cliente.saldoant) ? 'A' : 'N';
}
else
cliente.tipo_conta = (cliente.saldoant > 0) ? 'I' : 'N'
cliente.saldonovo = cliente.saldoant - cliente.pagto;
printf("saldo novo" %7.2f, cliente.saldonovo);
printf(" Status da Conta: ");
switch (cliente.tipo_conta){
case 'N':
printf("NORMAL\n");
break;
case 'A':
printf("ATRASADO\n");
break;
case 'I':
printf("inadimplente\n");
break;
default:
printf ("ERRO\n");
}
return(cliente);
}
void gravaarq(registro cliente) /*gravar as informacoes atualizadas no novo arquivo */
{
fprintf(ptnovo,"%s\n", cliente.endereco);
fprintf(ptnovo "%s\n", cliente.cidade);
fprintf(ptnovo,"%d\n", cliente.num_conta);
fprintf(ptnovo,"%c\n", cliente.tipo_conta);
fprintf(ptnovo,"%.2f\n", cliente.saldoant);
fprintf(ptnovo,"%.2f\n", cliente.saldonovo);
fprintf(ptnovo,"%.2f\n", cliente.pagto);
fprintf(ptnovo, "&d&d&d\n", cliente.ultpag.dia, cliente.ultpag.mes, cliente.ultpag.ano)
return;
Pergunta
linkzone
O programinha q eu fiz ta tanto uns erros mas não consigo consertar será q alguém pode me falar como arrumar?
Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.