Ir para conteúdo
Fórum Script Brasil

Wendell

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Sobre Wendell

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Wendell's Achievements

0

Reputação

  1. Wendell

    Loteria

    Senhores preciso desenvolver as funções insereApostaLista e geraRelatorio, necessárias para o funcionamento de um sistema de controle das apostas lotéricas para a LotoTAD$. Estas funções devem ser desenvolvidas utilizando a linguagem de programação C, seguindo a estrutura do código fonte do anexo I, cujas funções estão descritas no anexo II. Vale a pena salientar que é permitida a criação de funções adicionais, desde que estas sejam chamadas dentro do escopo das funções insereApostaLista ou geraRelatorio. Bom o corpo geral do sistema esta pronto : clique aqui para ver o código -> http://pastebin.com/kD8FbexF Este sistema tem um arquivo em txt que já possui alguns dados: apostas.txt 1415;PR/Curitiba;02,04,09,11,15,18 1372;SC/Florianopolis;06,09,13,15,17,19 #fim do arquivo Bom se fosse pra mim abrir o arquivo direto na função e ler todo arquivo eu conseguiria fazer, porém as structs possuem ponteiros que me deixam desorientado, e além de imprimir na tela, opção 1 Ler Arquivo, tenho que inserir novo jogo ao arquivo. Bom sei que o sistema não é facil, só preciso de uma orientação inicial de como começar a implementar as duas funções . Muito Obrigado. Att Wendell
  2. Eu entendi o código, so que criar uma lista ordenada buscando dentro de um arquivo txt, ordenando data, ae o bicho pega, porque não to sabendo nem começar. valeu abraço
  3. Se alguém poder me dar uma luz, pois necessito muito de um esclarecimento direto, em cima do código, pois na literatura pra mim esta muito (*abstrato). Valeu Desenvolver as funções CriaSubListaContaOrdenada e CriaSubListaFaturaOrdenada, necessárias para o funcionamento de um sistema de geração de extrato de conta corrente e cartão de crédito para o Banco TAD$. Estas funções devem ser desenvolvidas utilizando a linguagem de programação C, seguindo a estrutura do código fonte do anexo I, cujas funções estão descritas no anexo II. Vale a pena salientar que é permitida a criação de funções adicionais, desde que estas sejam chamadas dentro do escopo das funções CriaSubListaContaOrdenada ou CriaSubListaFaturaOrdenada. Usando o arquivo Entrada.txt ( Maria Cristina Ribeiro;123-4;5678-9;1000.00;987654321 05/01/2009;10:30;Deposito;100.00 09/01/2009;15:30;Compra_debito;30.00 01/11/2008;09:00;Compra_credito;30.00 10/02/2009;11:10;Transferencia;+49.50 11/12/2008;13:20;Pgto_fatura;50.00 10/12/2008;14:25;Compra_credito;30.00 28/12/2008;08:00;Saque;500.00 07/02/2009;11:20;Pgto_fatura;100.00 25/01/2009;08:00;Saque;200.00 18/10/2008;12:04;Compra_debito;500.00 09/01/2009;18:30;Compra_debito;55.00 02/01/2009;18:25;Compra_credito;150.00 17/02/2009;09:55;Compra_credito;25.45 15/11/2008;12:40;Compra_debito;500.00 18/01/2009;13:40;Deposito;500.00 05/01/2009;10:20;Pgto_fatura;50.00 10/01/2009;16:30;Transferencia;-90.50 05/01/2009;20:35;Transferencia;+100.25 21/11/2008;09:10;Compra_credito;90.00 25/12/2008;12:40;Compra_debito;70.45 13/01/2009;11:45;Deposito;50.10 05/12/2008;10:30;Deposito;200.00 05/12/2008;14:25;Compra_credito;20.00 25/10/2008;09:30;Compra_debito;130.00 07/02/2009;11:55;Compra_credito;175.45 25/12/2008;11:30;Compra_debito;200.45 15/02/2009;10:30;Deposito;300.00 15/01/2009;10:25;Compra_credito;220.00 07/11/2008;11:20;Pgto_fatura;100.00 05/01/2009;10:55;Compra_credito;35.45 20/02/2009;17:20;Pgto_fatura;400.00) /******************************************Bibliotecas*************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> /*****************************************Definições***************************************/ #define TAM_STRING 100 /*****************************************Estruturas***************************************/ //Estrutura utilizada para armazenar uma data typedef struct Data { int iDia; int iMes; int iAno; } stData; //Estrutura utilizada para armazenar uma hora typedef struct Horario { int iHora; int iMinuto; }stHorario; //Estrutura utilizada para armazenar os dados de uma conta typedef struct Conta { char cTitular[TAM_STRING]; char cAgencia[TAM_STRING]; char cNumConta[TAM_STRING]; float fSaldoAnterior; float fSaldoAtual; int iNumCartao; float fTotalComprasCartao; float fTotalPagtosCartao; float fTotalCartao; }stConta; //Estrutura utilizada para representar uma transação efetuada na conta ou cartão de crédito typedef struct Transacao { float fValor; stData sData; int iOperacao; stHorario sHorario; struct Transacao *prProximo; }stTransacao; //Estrutura utilizada para representar uma lista de transações typedef struct Lista { stTransacao *prInicio; stTransacao *prFim; }stLista; /*****************************************Variáveis Globais********************************/ //Armazena o nome das operações bancárias para conta corrente (Compra_debito, Saque, Deposito, Transferencia) e //cartao de crédito (Compra_credito, Pgto_fatura) char* OPERACOES[] = {"Compra_debito","Saque","Deposito","Transferencia","Compra_credito","Pgto_fatura"}; /*************************Implementação das funções****************************************/ /*------------------------------------------------------------------------------------------ * Nome da função: LerCabecalho * Descrição: Realiza a quebra das informações contidas no cabeçalho do arquivo (1ª linha do arquivo) * Retorno: Nenhum * Parâmetros: Ponteiro para uma estrutura stConta e string contendo cabeçalho ------------------------------------------------------------------------------------------*/ void LerCabecalho(stConta *pConta, char psCabecalho[]) { //Quebra os tokens do cabeçalho strcpy(pConta->cTitular,strtok(psCabecalho,";")); strcpy(pConta->cAgencia,strtok(NULL,";")); strcpy(pConta->cNumConta,strtok(NULL,";")); sscanf(strtok(NULL,";"),"%f",&pConta->fSaldoAnterior); sscanf(strtok(NULL,";"),"%d",&pConta->iNumCartao); } /*------------------------------------------------------------------------------------------ * Nome da função: RetornaOperacao * Descrição: Recebe uma string contendo uma operação e retorna o código da mesma * Retorno: Um valor inteiro indicando o código da transação * Parâmetros: String contendo a operaçao ------------------------------------------------------------------------------------------*/ int RetornaOperacao(char psOperacao[]) { int iIndex=0; for (iIndex=0; iIndex<6; iIndex++) { if(!strcmp(psOperacao,OPERACOES[iIndex])) { return iIndex; } } return -1; } /*------------------------------------------------------------------------------------------ * Nome da função: PreencheTransacao * Descrição: Quebra os campos de uma String contendo a transação e preenche a estrutura * Retorno: Nenhum * Parâmetros: Ponteiro para uma estrutura stTransacao e uma String ------------------------------------------------------------------------------------------*/ void PreencheTransacao(stTransacao *pTransacao, char psTransacao[]) { //Inicializa a transacao pTransacao->prProximo = NULL; pTransacao->fValor = 0.0f; //Quebra os tokens da transacao sscanf(strtok(psTransacao,";"),"%d/%d/%d/",&pTransacao->sData.iDia,&pTransacao->sData.iMes, &pTransacao->sData.iAno); sscanf(strtok(NULL,";"),"%d:%d",&pTransacao->sHorario.iHora,&pTransacao->sHorario.iMinuto); //Invoca a função que devolve o código da operação com base em uma string pTransacao->iOperacao = RetornaOperacao(strtok(NULL,";")); sscanf(strtok(NULL,";"),"%f",&pTransacao->fValor); //Faz a leitura do valor da transacao e de acordo com o tipo de operação coloca o sinal if(pTransacao->iOperacao == 0 || pTransacao->iOperacao == 1 || pTransacao->iOperacao == 4) { pTransacao->fValor *= -1; } } /*------------------------------------------------------------------------------------------ * Nome da função: InsereTransacao * Descrição: Insere uma transação na lista passada como parâmetro * Retorno: Nenhum * Parâmetros: Um ponteiro para uma lista e um ponteiro para uma transação -------------------------------------------------------------------------------------------*/ void InsereTransacao(stLista *pLista, stTransacao *pTransacao) { //Variáveis temporárias int iIndex=0; int iPosicao = 0; stTransacao *temp = NULL; //Verifica se a lista existe if (!pLista) { return; } //Lista vazia, inserção do primeiro elemento na lista if (!pLista->prInicio) { pLista->prInicio = pTransacao; pLista->prFim = pTransacao; return; } //Inserção no final da lista pLista->prFim->prProximo = pTransacao; pLista->prFim = pTransacao; } /*------------------------------------------------------------------------------------------ * Nome da função: LerArquivo * Descrição: Realiza a leitura das informações do arquivo de entrada para as listas da conta * corrente e do cartão de crédito * Retorno: Nenhum * Parâmetros: Um ponteiro para a lista conta, um ponteiro para a lista cartao, um ponteiro para * uma estrutura stConta e uma String com o nome do arquivo a ser lido ------------------------------------------------------------------------------------------*/ void LerArquivo(stLista *pListaConta, stLista *pListaCartao, stConta *pConta, char psNomeArquivo[]) { //Declara um ponteiro para a estrutura de um arquivo FILE *prArquivoEntrada = NULL; //Declara uma string para a leitura da linha char sLinha[TAM_STRING]; //Declara um ponteiro para transaçao stTransacao *prTransacao = NULL; //Faz as inicializaçoes das estruturas lista pListaConta->prInicio = NULL; pListaConta->prFim = NULL; pListaCartao->prInicio = NULL; pListaCartao->prFim = NULL; //Faz as inicializações da estrutura conta pConta->fSaldoAnterior = 0.0f; pConta->fSaldoAtual = 0.0f; pConta->iNumCartao = 0; pConta->fTotalComprasCartao = 0.0f; pConta->fTotalPagtosCartao = 0.0f; pConta->fTotalCartao = 0.0f; //Faz a abertura do arquivo prArquivoEntrada = fopen(psNomeArquivo,"r"); //Testa se o arquivo foi aberto com sucesso if (!prArquivoEntrada) { printf("não foi possivel abrir o arquivo de entrada"); return; } //Le a primeira linha do arquivo (cabecalho) fgets(sLinha,TAM_STRING,prArquivoEntrada); //Invoca a função que separa as informaçoes do cabeçalho LerCabecalho(pConta,sLinha); //Enquanto existirem transasões a serem lidas while (!feof(prArquivoEntrada)) { //Faz a leitura de uma linha no arquivo contendo os dados da transação fgets(sLinha,TAM_STRING,prArquivoEntrada); //Testa se não é linha em branco if (sLinha[0]=='\n') { continue; } //Aloca memória para uma nova transação prTransacao = (stTransacao*)malloc(sizeof(stTransacao)); //Quebra os dados da transação e preenche as estruturas PreencheTransacao(prTransacao,sLinha); //Verifica o tipo da operação e insere na lista do cartão ou da conta corrente: //código 1 a 4: operações de conta corrente //código 5 e 6: operações do cartão de crédito if (prTransacao->iOperacao < 4) { InsereTransacao(pListaConta,prTransacao); } else { InsereTransacao(pListaCartao,prTransacao); } } //Fecha o arquivo fclose(prArquivoEntrada); } /*------------------------------------------------------------------------------------------ * Nome da função: CriaSubListaContaOrdenada * Descrição: Cria uma sublista ordenada contendo as transações da conta com base em uma data inicial e final * Retorno: Ponteiro para uma lista * Parâmetros: Ponteiro para uma lista ordenada, ponteiro para estrutura do tipo conta e duas * estruturas do tipo data ------------------------------------------------------------------------------------------*/ stLista* CriaSubListaContaOrdenada(stLista* pListaConta, stConta *pConta, stData pDataInicial, stData pDataFinal) { //Cria um ponteiro para o nó inicial de uma lista stLista* prSubLista = NULL; //Implemente aqui //Retorna a lista ordenada return prSubLista; } /*------------------------------------------------------------------------------------------ * Nome da função: CriaSubListaFaturaOrdenada * Descrição: Cria uma sublista das transações da fatura com base em uma data inicial e final * Retorno: Ponteiro para uma lista * Parâmetros: Ponteiro para uma lista ordenada, ponteiro para estrutura do tipo conta e duas * estruturas do tipo data ------------------------------------------------------------------------------------------*/ stLista* CriaSubListaFaturaOrdenada(stLista* pListaCartao, stConta *pConta, stData pDataInicial, stData pDataFinal) { //Cria um ponteiro para o nó inicial de uma lista stLista* prSubLista = NULL; //Implemente aqui //Retorna a lista ordenada return prSubLista; } /*------------------------------------------------------------------------------------------ * Nome da função: LiberaTransacoes * Descrição: Libera a memória de todas as transações contidas em uma lista * Retorno: Nenhum * Parâmetros: Um ponteiro para uma lista ------------------------------------------------------------------------------------------*/ void LiberaMemoriaTransacoes(stLista *pLista) { stTransacao *temp = NULL; //Verifica se a lista não está vazia if (!pLista || !pLista->prInicio) { return; } //Enquanto houverem transações na lista, libera memória while (pLista->prInicio != NULL) { temp = pLista->prInicio->prProximo; free(pLista->prInicio); pLista->prInicio = temp; } //Aponta os ponteiros de inicio e fim de lista para NULL pLista->prInicio = NULL; pLista->prFim = NULL; } /*------------------------------------------------------------------------------------------ * Nome da função: FormataValorMonetario * Descrição: Formata um valor monetário para o formato +00.00 ou -00.00 * Retorno: Nenhum * Parâmetros: Um ponteiro para uma string e um valor do tipo float ------------------------------------------------------------------------------------------*/ void FormataValorMonetario(char *psValor, float pValor) { // Verifica o valor pra ver se é necessário inserir o sinal if(pValor >= 0) { sprintf(psValor, "+%0.2f", pValor); } else sprintf(psValor, "%0.2f", pValor); } /*------------------------------------------------------------------------------------------ * Nome da função: FormataData * Descrição: Formata uma data para o formato dd/mm/aaaa * Retorno: Nenhum * Parâmetros: Um ponteiro para uma string e uma estrutura do tipo Data ------------------------------------------------------------------------------------------*/ void FormataData(char *psData, stData pData) { char cTmpDia[3]; char cTmpMes[3]; if(pData.iDia < 10) { sprintf(cTmpDia, "0%d", pData.iDia); } else { sprintf(cTmpDia, "%d", pData.iDia); } if(pData.iMes < 10) { sprintf(cTmpMes, "0%d", pData.iMes); } else { sprintf(cTmpMes, "%d", pData.iMes); } sprintf(psData, "%s/%s/%d", cTmpDia, cTmpMes, pData.iAno); } /*------------------------------------------------------------------------------------------ * Nome da função: FormataHorario * Descrição: Formata um horario para o formato hh:mm * Retorno: Nenhum * Parâmetros: Um ponteiro para uma string e uma estrutura do tipo Horario ------------------------------------------------------------------------------------------*/ void FormataHorario(char *psHorario, stHorario pHorario) { char cTmpHora[3]; char cTmpMin[3]; if(pHorario.iHora < 10) { sprintf(cTmpHora, "0%d", pHorario.iHora); } else { sprintf(cTmpHora, "%d", pHorario.iHora); } if(pHorario.iMinuto < 10) { sprintf(cTmpMin, "0%d", pHorario.iMinuto); } else { sprintf(cTmpMin, "%d", pHorario.iMinuto); } sprintf(psHorario, "%s:%s", cTmpHora, cTmpMin); } /*------------------------------------------------------------------------------------------ * Nome da função: ImprimeExtrato * Descrição: Faz a impressão do extrato da conta corrente * Retorno: Nenhum * Parâmetros: Uma estrutura do tipo stConta e um ponteiro para uma lista ordenada ------------------------------------------------------------------------------------------*/ void ImprimeExtrato(stConta pConta, stLista *pLista) { // Armazena valores que são convertidos para string char strValor[TAM_STRING]; char strData[TAM_STRING]; char strHorario[TAM_STRING]; //Declara um ponteiro para a estrutura de um arquivo FILE *prArquivoSaida = NULL; //Faz a abertura do arquivo prArquivoSaida = fopen("extratoConta.txt","w"); //Testa se o arquivo foi aberto com sucesso if (!prArquivoSaida) { printf("não foi possivel abrir o arquivo de saída"); return; } fputs("\n ================================================\n", prArquivoSaida); fputs("\n Banco TAD$\n", prArquivoSaida); fputs("\n Extrato de Conta Corrente\n\n", prArquivoSaida); fputs(" Agencia: ", prArquivoSaida); fputs(pConta.cAgencia, prArquivoSaida); fputs("\n",prArquivoSaida); fputs(" Conta Corrente: ", prArquivoSaida); fputs(pConta.cNumConta, prArquivoSaida); fputs("\n",prArquivoSaida); fputs(" Titular: ", prArquivoSaida); fputs(pConta.cTitular, prArquivoSaida); fputs("\n ------------------------------------------------\n\n", prArquivoSaida); fputs("\n\t\t\tSaldo Anterior: ", prArquivoSaida); FormataValorMonetario(strValor, pConta.fSaldoAnterior); fputs(strValor, prArquivoSaida); fputs("\n\n Data\t Horario\t Operacao\t Valor\n\n", prArquivoSaida); //Cria um nó temporário stTransacao *temp = NULL; //Testa se a lista existe if(!pLista || !pLista->prInicio) { return; } //Aponta para o primeiro elemento da lista temp = pLista->prInicio; //Enquanto lista não chegou ao final, imprime while(temp!=pLista->prFim) { FormataValorMonetario(strValor, temp->fValor); FormataData(strData, temp->sData); FormataHorario(strHorario, temp->sHorario); if(temp->iOperacao == 1) // Saque: adiciona mais uma tabulação antes do valor { fprintf(prArquivoSaida, " %s \t %s \t %s \t\t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } else { fprintf(prArquivoSaida, " %s \t %s \t %s \t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } temp = temp->prProximo; } FormataValorMonetario(strValor, temp->fValor); FormataData(strData, temp->sData); FormataHorario(strHorario, temp->sHorario); fprintf(prArquivoSaida, " %s \t %s \t %s \t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); FormataValorMonetario(strValor, pConta.fSaldoAtual); fputs("\n\t\t\tSaldo Atual: ", prArquivoSaida); fputs(strValor, prArquivoSaida); //Fecha o arquivo fclose(prArquivoSaida); } /*------------------------------------------------------------------------------------------ * Nome da função: ImprimeFatura * Descrição: Faz a impressão da fatura do cartão de crédito * Retorno: Nenhum * Parâmetros: Estrutura do tipo Conta e um ponteiro para uma lista ordenada ------------------------------------------------------------------------------------------*/ void ImprimeFatura(stConta pConta, stLista *pLista) { // Armazena valores que são convertidos para string char strValor[TAM_STRING]; char strData[TAM_STRING]; char strHorario[TAM_STRING]; //Declara um ponteiro para a estrutura de um arquivo FILE *prArquivoSaida = NULL; //Faz a abertura do arquivo prArquivoSaida = fopen("faturaCartao.txt","w"); //Testa se o arquivo foi aberto com sucesso if (!prArquivoSaida) { printf("não foi possivel abrir o arquivo de saída"); return; } fputs("\n ================================================\n", prArquivoSaida); fputs("\n Banco TAD$\n", prArquivoSaida); fputs("\n Fatura do Cartao de Credito\n\n", prArquivoSaida); fputs(" Nro. do Cartao: ", prArquivoSaida); fprintf(prArquivoSaida, "%i\n", pConta.iNumCartao); fputs(" Titular: ", prArquivoSaida); fputs(pConta.cTitular, prArquivoSaida); fputs("\n ------------------------------------------------\n\n", prArquivoSaida); fputs("\n Data\t Horario\t Operacao\t Valor\n\n", prArquivoSaida); //Cria um nó temporário stTransacao *temp = NULL; //Testa se a lista existe if(!pLista || !pLista->prInicio) { return; } //Aponta para o primeiro elemento da lista temp = pLista->prInicio; //Enquanto lista não chegou ao final, imprime while(temp!=pLista->prFim) { FormataValorMonetario(strValor, temp->fValor); FormataData(strData, temp->sData); FormataHorario(strHorario, temp->sHorario); if(temp->iOperacao == 5) // Pagto_Fatura: adiciona mais uma tabulação antes do valor { fprintf(prArquivoSaida, " %s \t %s \t %s \t\t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } else { fprintf(prArquivoSaida, " %s \t %s \t %s \t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } temp = temp->prProximo; } FormataValorMonetario(strValor, temp->fValor); FormataData(strData, temp->sData); FormataHorario(strHorario, temp->sHorario); if(temp->iOperacao == 5) // Pagto_Fatura: adiciona mais uma tabulação antes do valor { fprintf(prArquivoSaida, " %s \t %s \t %s \t\t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } else { fprintf(prArquivoSaida, " %s \t %s \t %s \t %s\n", strData, strHorario, OPERACOES[temp->iOperacao], strValor); } fputs("\n\t\t\tTotal de Compras: ", prArquivoSaida); FormataValorMonetario(strValor, pConta.fTotalComprasCartao); fputs(strValor, prArquivoSaida); fputs("\n\t\t\tTotal de Pagamentos: ", prArquivoSaida); FormataValorMonetario(strValor, pConta.fTotalPagtosCartao); fputs(strValor, prArquivoSaida); fputs("\n\t\t\tTotal da Fatura: ", prArquivoSaida); FormataValorMonetario(strValor, pConta.fTotalCartao); fputs(strValor, prArquivoSaida); //Fecha o arquivo fclose(prArquivoSaida); } /*------------------------------------------------------------------------------------------ * Nome da função: MenuPrincipal * Descrição: Mostra na tela o menu principal * Retorno: Nenhum * Parâmetros: Nenhum ------------------------------------------------------------------------------------------*/ void MenuPrincipal() { system("cls"); printf("\n |------------------------------------------------|\n"); printf(" | |\n"); printf(" | UNIVERSIDADE DO TOCANTINS |\n"); printf(" | Banco TAD$ |\n"); printf(" | |\n"); printf(" |------------------------------------------------|\n"); printf(" | |\n"); printf(" | <1> Extrato da Conta Corrente |\n"); printf(" | <2> Fatura do Cartao de Credito |\n"); printf(" | <3> Sair |\n"); printf(" | |\n"); printf(" |------------------------------------------------|\n\n"); printf("\t\tOpcao: "); } /*------------------------------------------------------------------------------------------ * Nome da função: TelaPeriodo * Descrição: Mostra na tela o cabeçalho para solicitação do período do extrato da conta ou do cartao * Retorno: Nenhum * Parâmetros: Nenhum ------------------------------------------------------------------------------------------*/ void TelaPeriodo(char* psTipoRelatorio, stData *pDataInicio, stData *pDataFinal) { system("cls"); printf("\n |------------------------------------------------|\n"); printf(" | |\n"); printf(" | UNIVERSIDADE DO TOCANTINS |\n"); printf(" | Banco TAD$ |\n"); printf(" | |\n"); printf(" |------------------------------------------------|\n"); printf(" | |\n"); printf(" | %s - Periodo |\n",psTipoRelatorio); printf(" | |\n"); printf(" |------------------------------------------------|\n\n"); //Obtem a data inicial e final para o extrato desejado printf(" Entre com a data inicial: "); scanf("%d/%d/%d", &pDataInicio->iDia, &pDataInicio->iMes, &pDataInicio->iAno); printf(" Entre com a data final: "); scanf("%d/%d/%d", &pDataFinal->iDia, &pDataFinal->iMes, &pDataFinal->iAno); } /*------------------------------------------------------------------------------------------ * Nome da função: main * Descrição: Função principal de um programa em C * Retorno: Um valor inteiro * Parâmetros: Nenhum ------------------------------------------------------------------------------------------*/ int main(void) { //Variáveis criadas para armazenar a data inicial e final do extrato desejado stData sDataInicio; stData sDataFinal; //Variável criada para armazenar as informações da conta do cliente stConta sConta; //Declaração e alocação de memória para as listas stLista *sListaConta = (stLista*)malloc(sizeof(stLista)); stLista *sListaCartao = (stLista*)malloc(sizeof(stLista)); stLista *sSubLista = NULL; // Variável que armazena a opção do menu selecionada pelo usuário char opcao; //Invoca a função para realizar a leitura dos dados do arquivo LerArquivo(sListaConta, sListaCartao, &sConta, "Entrada.txt"); // Mostra o menu principal na tela MenuPrincipal(); fflush(stdin); opcao=getchar(); switch(opcao) { case '1': // Emitir extrato da conta corrente system("cls"); TelaPeriodo("Extrato da Conta Corrente ",&sDataInicio, &sDataFinal); //Cria a sublista de transações com base nas datas fornecidas sSubLista = CriaSubListaContaOrdenada(sListaConta, &sConta, sDataInicio, sDataFinal); //Imprime extrato no arquivo de saída ImprimeExtrato(sConta, sSubLista); system("cls"); //Imprime mensagem printf("\n\n\t\tExtrato da conta corrente gerado com sucesso"); getch(); break; case '2': // Emitir fatura do cartão de crédito system("cls"); TelaPeriodo("Fatura do Cartao de Credito",&sDataInicio, &sDataFinal); //Cria a sublista de transações com base nas datas fornecidas sSubLista = CriaSubListaFaturaOrdenada(sListaCartao, &sConta, sDataInicio, sDataFinal); //Imprime a fatura no arquivo de saída ImprimeFatura(sConta, sSubLista); system("cls"); //Imprime mensagem printf("\n\n\t\tFatura do cartao de credito gerado com sucesso"); getch(); break; } //Libera a memória alocada dinamicamente LiberaMemoriaTransacoes(sListaConta); LiberaMemoriaTransacoes(sListaCartao); free(sListaConta); free(sListaCartao); free(sSubLista); return 0; }
  4. Wendell

    Ajuda com Arquivos

    Entrada Consiste em um arquivo texto com o nome entrada.txt contendo uma linguagem de marcação textual descrita no fim do código. Relatório saída 1: arquivo texto com o nome saida1.txt contendo somente o número de patrimônio dos computadores (um por linha) que satisfaçam à condição de memória RAM inferior a um valor informado pelo usuário. Relatório saída 2: arquivo texto com o nome saida2.txt contendo somente o número de patrimônio dos computadores (um por linha) que satisfaçam à condição de possuírem um aplicativo com uma determinada versão, dados informados pelo usuário. abçs
×
×
  • Criar Novo...