Ir para conteúdo
Fórum Script Brasil

RenanPoswar

Membros
  • Total de itens

    15
  • Registro em

  • Última visita

Tudo que RenanPoswar postou

  1. A descrição do programa... Em ano eleitoral é comum empresas serem contratadas para realizarem as pesquisas de intenção de votos da população. Para facilitar o armazenamento e processamento dos dados da pesquisa, a empresa LM comprou palm tops e contratou você para desenvolver um programa em C++ que atenda os requisitos definidos a seguir. Neste ano três candidatos (A, B e C) disputarão a presidência da república. Cada eleitor que participa da pesquisa de intenção de votos responde as seguintes perguntas/solicitações: a) Qual a sua idade? Obs.: São entrevistados apenas candidatos a partir de 16 anos. B) Qual o seu sexo (M ou F)? c) Qual é o seu candidato preferido? Obs.: O entrevistado pode escolher um dos candidatos ou nenhum (caso ele tenha decidido votar em branco ou nulo). d) Se o entrevistado tiver escolhido algum candidato no item c: d1) Atribua uma nota entre zero e dez para o candidato de sua preferência. e) Deseja atribuir notas para mais quantos candidatos (exceto aquele que já foi avaliado)? f) Se o resultado da resposta para o item e for diferente de zero: f1) Qual candidato deseja avaliar? f2) Qual a sua nota (entre zero e dez) para o candidato escolhido? Elabore um programa que leia os dados definidos anteriormente para qualquer quantidade de pessoas entrevistadas. Após a coleta de dados de todos os entrevistados, o programa deve fornecer as seguintes estatísticas: a) Para cada um dos candidatos (A, B e C): a1) Qual o percentual de entrevistados optou por esse candidato? a2) Qual é a nota média desse candidato? a3) Qual a idade média dos eleitores que preferem esse candidato? a4) Qual é o sexo predominante entre os entrevistados que têm preferência por esse candidato? B) Qual o percentual de entrevistados “votou” em branco ou nulo? c) Qual candidato possui eleitores (pessoas entrevistadas) com a maior diferença de idade entre o eleitor mais novo e o eleitor mais velho? quero saber se struct é a melhor maneira de eu começar a fazer esse trabalho... obrg
  2. Olá... tenho um codigo xml q integra com o swf... gostaria de fazer com que o fundo tenha um resultado transparente... meu xml esta assim <main item_bg_color="tranparent" item_text_color="0x660000" item_hover_bg_color="0x660000" item_hover_text_color="0xffffff" ></main> mas o fundo ficou preto... sera q tenho q fazer um novo swf?? ou o codigo 'tranparent' não funciona nesse caso?? se não qual seria o indicado?? abraço
  3. Gostaria de saber se com a Area shape eu consigo um link para e-mail.. obrigado
  4. O exercicio é o seguinte... Considere n cidades numeradas de 0 a n-1 que estão interligadas por uma série de estradas de mão única. As ligações entre as cidades são representadas pelos elementos de uma matriz quadrada Lnxn, cujos elementos lij assumem o valor 1 ou 0, conforme exista ou não estrada direta que saia da cidade i e chegue à cidade j. Assim, os elementos da linha i indicam as estradas que saem da cidade i, e os elementos da coluna j indicam as estradas que chegam à cidade j. a) criar uma função que carrega os dados (L) diretamente de um arquivo de texto. (consegui resolver) B) dado k, determinar qunatas estradas saem quantas chegam a cidade k. (consegui resolver) c) A qual cidade chega o maior numero de estradas? (tenho duvida nessa, o programa roda mas quanto executo a opção 3 o programa fecha) meu codigo pr enquanto está assim #include <iostream> #include <fstream> #include <string> using namespace std; int **le_matriz(int *nlin, int *ncol) { int **v; int i, j; int ch, prev = '\n',lines = 0; *ncol=*nlin; FILE *file = fopen("matriz.txt", "r"); if ( file ) { while ( (ch = fgetc(file)) != EOF ) { if ( ch == '\n' ) { lines++; } prev = ch; } fclose(file); if ( prev != '\n' ) { lines++; } } file = fopen("matriz.txt", "r"); *nlin=lines; v =(int **) malloc (*nlin * sizeof(int *)); for (i = 0; i < *nlin; i++) v[i] =(int *) malloc (*ncol * sizeof(int)); for (i = 0; i < *nlin; i++) for (j = 0; j < *ncol; j++) fscanf(file, "%d", &v[i][j]); fclose(file); return v; } int main() { int op, n, nlin, ncol; int **v; do { cout<<"Escolha uma opcao\n"; cout<<"1. Carregar dados de uma matriz\n"; cout<<"2. Saber quantas estradas saem e quantas chegam a uma determinada cidade\n"; cout<<"3. Saber qual cidade chega o maio numero de estradas\n"; cout<<"4. Verificar se as ligacoes diretas entre determinada cidade e outras são de mao dupla\n"; cout<<"5. Relacionar as cidades que possuem saídas diretas para uma cidade determinada\n"; cout<<"6. Saber se existe cidade isolada\n"; cout<<"7. Saber quais cidades não há saida\n"; cout<<"8. Saber quais cidades há saida sem haver entrada\n"; cout<<"9. Saber se e possivel poercorrer um roteiro determinado\n"; cout<<"10. Fechar programa\n"; do { cout<<"Escolha uma opcao: "; cin>>op; if (op < 1 || op > 10) cout<<"Opcao Invalida.\n"; }while (op < 1 || op > 10); switch(op) { case 1: cout<<"\nO arquivo devera estar como matriz.txt\n"; cout<<"Indique o numero de cidades: "; cin>>n; cout<<"\n\n"; nlin=n; ncol=n; v = le_matriz(&nlin, &ncol); break; case 2: int k, saem, chegam; saem = 0; chegam = 0; cout<<"\n\nQual cidade deseja saber? "; cin>>k; for (int i=0; i<n; i++) { if (i != (k-1)) { if(v[k-1][i] == 1) saem++; } } for (int i=0; i<n; i++) { if (i != (k-1)) { if(v[i][k-1] == 1) chegam++; } } cout<<"Saem "<<saem<<" estradas dessa cidade, e chegam "<<chegam<<" estradas.\n\n"; break; case 3: int m[n], maior; for (int i=0; i<n; i++) m[i]=0; maior = 0; for (int j=0; j<n; j++) { for (int i=0; i<n; i++) { if (i != j) { if (v[i][j] == 1)m[j]++; } if (m[j] >= maior) maior = m[j]; } } cout<<"A(s) cidade(s) que chega(m) o maior numero de estradas e(são): "; for (int i=0; i<n; i++) { if (m[i] == maior) cout<<i<<" "; } cout<<"\n\n"; break; } }while(op != 10); system("pause"); return 0; }
  5. RenanPoswar

    Matriz

    estou com um problema eu meu programa... esta dando um problema de que a variavel da função de ler a matriz diz que não foi declarada... não sei o que eu estou fazendo de errado.. meu programa por enquanto esta assim.. #include <iostream> #include <fstream> #include <string> using namespace std; void lermatriz(int mat[m][n]) { int i, j; FILE *fp; if (!(fp = fopen("matriz.txt","r"))) { printf("Arquivo não pode ser aberto!!\n"); return; } for (i = 0; i < m; i++) for (j = 0; j < n; j++) fscanf(fp, "%f",&mat[i][j]); fclose(fp); return; } int main() { int op, cidades, m, n; int matriz[m][n]; cout<<"Escolha uma opcao\n"; cout<<"1. Carregar dados de uma matriz\n"; cout<<"2. Saber quantas estradas saem e quantas chegam a uma determinada cidade\n"; cout<<"3. Saber qual cidade chega o maio numero de estradas\n"; cout<<"4. Verificar se as ligacoes diretas entre determinada cidade e outras são de mao dupla\n"; cout<<"5. Relacionar as cidades que possuem saídas diretas para uma cidade determinada\n"; cout<<"6. Saber se existe cidade isolada\n"; cout<<"7. Saber quais cidades não há saida\n"; cout<<"8. Saber quais cidades há saida sem haver entrada\n"; cout<<"9. Saber se e possivel poercorrer um roteiro determinado\n"; cout<<"10. Fechar programa\n"; do { cout<<"Escolha uma opcao: "; cin>>op; if (op < 1 || op > 10) cout<<"Opção Inválida.\n"; }while (op < 1 || op > 10); do { switch(op) { case 1: cout<<"O arquivo devera estar como matriz.txt"; cout<<"Indique o numero de cidades: "; cin>>cidades; m=cidades; n=m; lermatriz(matriz); break; } }while(op != 10); system("pause"); return 0; }
  6. RenanPoswar

    Matriz

    Olá pessoal.. estou com uma duvida... tenho q carregar os dados de uma matriz quadrada diretamente de um arquivo de texto.. Eu consegui fazer um codigo para ler a matriz e imprimir na tela... mas não sei como faço para fazer com que os valores dessa matriz seja armazenado em suas variaveis, para posteriormente eu acessar esses valores... tipo... acessar o valor da posição [2,3] da matriz... a codigo que tenho é esse... #include <iostream> #include <fstream> #include <string> using namespace std; int main(){ char depot[300]; ifstream leitura; leitura.open("strings.txt"); if(!leitura.is_open( )) { cout<<"Não foi possível abrir arquivo! Programa será terminado!\n"; leitura.clear( ); //reseta o objeto leitura, para limpar memória do sistema} } while (leitura.getline(depot, 300)) {cout << depot <<"\n";} leitura.close(); system("PAUSE"); return 0; } abraço
  7. RenanPoswar

    Programa em c

    ninguém ajuda???
  8. RenanPoswar

    Programa em c

    O programa que eu estou querendo fazer serve para distribuir o valor da conta de telefone entre os moradores da minha republica. O esquema é o seguinte: 1- Existe um cadastro de morador, com um codigo de cada morador para facilitar a entrada de dados 2- Existe um valor fixo (assinatura ou multa) que deve ser dividido por todos os moradores 3- Divide-se o resto do valor da conta pelos segundos totais falados, gerando uma quantia q deve ser paga por segundo falado 4- O usuario vai digitar a duração das ligaçoes de cada morador e oi programa vai calcular o valor q deve ser pago pelo morador... mas o programa esta dando alguns loops... alguém me ajude a consertar.. se alguém tiver alguma sugestão de melhora do programa seja bem vindo para falar... aki vai o codigo #include <stdio.h> #include <string.h> #include <conio.h> #define TAM_MAX_NOME 40 #define TAM_MAX_CODIGO 15 struct moradores { char nome[TAM_MAX_NOME]; char codigo[TAM_MAX_CODIGO]; int segundos; double divida; }; char *fgetline(FILE *f, char *s, int tamanho) { char *str = fgets(s, tamanho, f); if (str != NULL) { int n = strlen(s); if (s[n-1] == '\n') s[n-1] = ''; else while (! feof(f) && fgetc(f) != '\n'); } return str; } void distribuicao(struct moradores v[], int*pn) { char pesquisa_codigo[TAM_MAX_CODIGO]; int i, h, m, s, r, x; double d, d2, conta, vps, horas, minutos, segundos; printf("Valor a ser dividido por todos: R$"); scanf("%lf", &d); d2 = d / *pn; for(i = 0; i < *pn; i++){ v[i].divida += d2;} printf("Deseja voltar ao menu?\n1-Sim\n2-não\nOpcao: "); scanf("%d", &r); if(r == 1){printf("\n\n"); return;} printf("\nValor da conta para dividir pelos minutos: R$"); scanf("%lf", &conta); printf("\nMinutos total da conta (hh:mm:ss): "); scanf("%lf:%lf:%lf", &horas, &minutos, &segundos); vps = conta / (3600*horas + 60*minutos + segundos); printf("\nValor a ser pago por segundo falado: R$%.5lf\n\n", vps); do { printf("\nAcrescentar tempo a morador?\n1-Sim\n2-não\nOpcao: "); scanf("%d", &x); if(x == 1) { printf("Codigo do morador: "); fgetline(stdin, pesquisa_codigo, TAM_MAX_CODIGO); for (i = 0; i < *pn; i++) { if (strcmp(v[i].codigo, pesquisa_codigo) == 0) { printf("Tempo da ligação (hh:mm:ss): "); scanf("%d:%d:%d", &h, &m, &s); v[i].segundos += (3600*h + 60*m + s); break; } } } }while(x == 's'); for (i = 0; i < *pn; i++) v[i].divida += (v[i].segundos * vps); } void adicionar_morador(struct moradores v[], int *pn) { printf("\nAdicionando novo usuario\n"); printf("Nome do usuario: "); fgetline(stdin, v[*pn].nome, TAM_MAX_NOME); printf("Codigo: "); fgetline(stdin, v[*pn].codigo, TAM_MAX_CODIGO); printf("\n\n"); (*pn)++; } void consultar(struct moradores v[], int n) { char pesquisa_codigo[TAM_MAX_CODIGO]; printf("\nConsulta de divida\n"); printf("Codigo: "); fgetline(stdin, pesquisa_codigo, TAM_MAX_CODIGO); int i; for (i = 0; i < n; i++) { if (strcmp(v[i].codigo, pesquisa_codigo) == 0) { printf("Nome: %s\n", v[i].nome); printf("Divida: R$%.2lf\n\n", v[i].divida); break; } else { if (strcmp(v[i].codigo, pesquisa_codigo) != 0) printf("\nUsuario não encontrado.\n\n"); break; } } } void abater(struct moradores v[], int *pn) { char pesquisa_codigo[TAM_MAX_CODIGO]; double pagamento; printf("\nPagamento de divida\n"); printf("Codigo: "); fgetline(stdin, pesquisa_codigo, TAM_MAX_CODIGO); int i; for (i = 0; i < *pn; i++) { if (strcmp(v[i].codigo, pesquisa_codigo) == 0) { printf("Valor do pagamento: R$"); scanf("%lf", &pagamento); if (pagamento < 0.0 || pagamento == 0.0) printf("Voce deve colocar um valor positivo"); else { if (pagamento > v[i].divida) printf("Valor do pagamento maior que a divida.\n\n"); else { v[i].divida -= pagamento; printf("Pagamento realizado com sucesso\n"); printf("Divida atual: R$%.2lf\n\n", v[i].divida); } } } else { if (strcmp(v[i].codigo, pesquisa_codigo) != 0) printf("\nUsuario não encontrado.\n\n"); } } } void acrescentar(struct moradores v[], int *pn) { char pesquisa_codigo[TAM_MAX_CODIGO]; double acrescimo; printf("\nAcrescimo de divida\n"); printf("Codigo: "); fgetline(stdin, pesquisa_codigo, TAM_MAX_CODIGO); int i; for (i = 0; i < *pn; i++) { if (strcmp(v[i].codigo, pesquisa_codigo) == 0) { printf("Valor do acrescimo: R$"); scanf("%lf", &acrescimo); if (acrescimo < 0.0 || acrescimo == 0.0) printf("Voce deve colocar um valor positivo"); else { v[i].divida += acrescimo; printf("Acrescimo de divida realizado com sucesso\n"); printf("Divida atual: R$%.2lf\n\n", v[i].divida); } } else { if (strcmp(v[i].codigo, pesquisa_codigo) != 0) printf("\nUsuario não encontrado.\n\n"); } } } void listar(struct moradores v[], int n) { printf("Listagem de todos os usuarios e suas respectivas dividas\n"); int i; for (i = 0; i < n; i++) { printf("--–-–-–-–-–-–-–-–-–-–-–-–-–-–-–-–-–-–\n"); printf("Nome : %s\n", v[i].nome); printf("Divida : R$%.2f\n", v[i].divida); } } void ler_arquivo(struct moradores v[], int *pn) { printf("\nLeitura de arquivo do Sistema\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "r"); if (f == NULL) printf("O arquivo não foi encontrado.\n"); else { *pn = 0; while (! feof(f)) { fgetline(f, v[*pn].nome, TAM_MAX_NOME); fscanf(f, "%lf", &(v[*pn].divida)); fgetline(f, v[*pn].codigo, TAM_MAX_CODIGO); if (v[*pn].nome[0] != '') (*pn)++; } fclose(f); } printf("Numeros de usuario cadastrados = %d\n\n", (*pn - 2)); } void gravar_arquivo(struct moradores v[], int n) { printf("\nGravação dos dados do Sistema\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "w"); if (f == NULL) printf("Não foi possivel salvar o arquivo.\n"); else { int i; for (i = 0; i < n; i++) { fprintf(f, "%s\n", v[i].nome); fprintf(f, "%s\n", v[i].codigo); fprintf(f, "%lf\n", v[i].divida); } fclose(f); } printf("\n"); } int main(void) { struct moradores dados[500]; int n = 0; int opcao; do { printf("===============================================================================\n"); printf("============================ REPUBLICA COSA NOSTRA ============================\n"); printf("===============================================================================\n\n"); printf("=========== SISTEMA DE DISTRIBUICAO DE VALORES DA CONTA DE TELEFONE ===========\n\n"); printf("1. Adicionar morador\n"); printf("2. Consultar divida de morador\n"); printf("3. Abater divida de morador\n"); printf("4. Fazer distribuicao de valores da conta de telefone\n"); printf("5. Acrescentar divida a morador\n"); printf("6. Listar todos usuarios\n"); printf("7. Ler dados de arquivo\n"); printf("8. Gravar dados em arquivo\n"); printf("0. Terminar\n"); printf("\n"); do { printf("Escolha uma opcao: "); scanf("%d", &opcao); if (opcao < 0 || opcao > 8) printf("Opção Inválida.\n"); } while (opcao < 0 || opcao > 8); getchar(); switch (opcao) { case 1: adicionar_morador(dados, &n); break; case 2: consultar(dados, n); break; case 3: abater(dados, &n); break; case 4: distribuicao(dados, &n); break; case 5: acrescentar(dados, &n); break; case 6: listar(dados, n); break; case 7: ler_arquivo(dados, &n); break; case 8: gravar_arquivo(dados, n); break; case 0: break; } if (opcao == 0) printf("\nO programa sera fechado.\n"); } while (opcao != 0); getchar(); return 0; }
  9. Uma duvida importante: Duas contas de uma mesma agência não podem ter o mesmo número. como faço essa validação??? Outra dúvida é em questão de calcular o valor total em depósito em uma agência ... não estou conseguindo fazer estas duas coisas... meu codigo está assim: #include <stdio.h> #include <string.h> #include <conio.h> #define TAM_MAX_CLIENTES 1000 #define TAM_MAX_AGENCIA 10 #define TAM_MAX_CONTA 20 #define TAM_MAX_SENHA 06 #define TAM_MAX_NOME 60 struct conta { char agencia[TAM_MAX_AGENCIA]; char conta[TAM_MAX_CONTA]; int senha; char nome[TAM_MAX_NOME]; double cheque; double saldo; }; char *fgetline(FILE *f, char *s, int tamanho) { char *str = fgets(s, tamanho, f); if (str != NULL) { int n = strlen(s); if (s[n-1] == '\n') s[n-1] = ''; else while (! feof(f) && fgetc(f) != '\n'); } return str; } void abrir_conta(struct conta v[], int *pn) { printf("\nAbertura de nova conta\n"); if (*pn == TAM_MAX_CLIENTES) printf("O banco já atingiu o numero de clientes suportado pelo programa. Chame o administrador do programa para alterá-lo.\n"); else { printf("Nome do titular: "); fgetline(stdin, v[*pn].nome, TAM_MAX_NOME); printf("Numero da Agência: "); fgetline(stdin, v[*pn].agencia, TAM_MAX_AGENCIA); printf("Numero do conta: "); fgetline(stdin, v[*pn].conta, TAM_MAX_CONTA); printf("Valor do cheque especial: R$"); scanf("%lf", &v[*pn].cheque); printf("Saldo inicial: R$"); scanf("%lf", &v[*pn].saldo); printf("Senha (deve conter 6 numeros): "); scanf("%d", &v[*pn].senha); printf("\n\n"); (*pn)++; } } void consultar(struct conta v[], int n) { char pesquisa_agencia[TAM_MAX_AGENCIA]; char pesquisa_conta[TAM_MAX_CONTA]; int senha; printf("\nConsulta de saldo de conta\n"); printf("Agencia: "); fgetline(stdin, pesquisa_agencia, TAM_MAX_AGENCIA); printf("Conta: "); fgetline(stdin, pesquisa_conta, TAM_MAX_CONTA); printf("Senha: "); scanf("%d", &senha); int i; for (i = 0; i < n; i++) { if (strcmp(v[i].agencia, pesquisa_agencia) == 0 && strcmp(v[i].conta, pesquisa_conta) == 0) { if ((v[i].senha - senha) == 0) { printf("Nome do titular: %s\n", v[i].nome); printf("Cheque especial: R$%.2lf\n", v[i].cheque); printf("Saldo da conta: R$%.2lf\n", v[i].saldo + v[i].cheque); printf("Obs: O saldo da conta é adicionado do cheque especial.\n\n"); } else printf("Senha invalida.\n"); return; } else { if (strcmp(v[i].agencia, pesquisa_agencia) != 0) printf("\nAgencia não encontrada.\n\n"); if (strcmp(v[i].conta, pesquisa_conta) != 0) printf("\nConta não encontrada.\n\n"); } } } void saque(struct conta v[], int *pn) { char pesquisa_agencia[TAM_MAX_AGENCIA]; char pesquisa_conta[TAM_MAX_CONTA]; int senha; double saque; printf("\nSaque de conta\n"); printf("Agencia: "); fgetline(stdin, pesquisa_agencia, TAM_MAX_AGENCIA); printf("Conta: "); fgetline(stdin, pesquisa_conta, TAM_MAX_CONTA); printf("Senha: "); scanf("%d", &senha); int i; for (i = 0; i < *pn; i++) { if (strcmp(v[i].agencia, pesquisa_agencia) == 0 && strcmp(v[i].conta, pesquisa_conta) == 0) { if ((v[i].senha - senha) == 0) { printf("Valor do saque: R$"); scanf("%lf", &saque); if (saque < 0.0 || saque == 0.0) printf("Voce deve colocar um valor positivo"); else { if (saque > (v[i].saldo + v[i].cheque)) printf("Saldo insuficiente.\n\n"); else { v[i].saldo -= saque; printf("Saque realizado com sucesso\n"); printf("Saldo atual: R$%.2lf\n\n", v[i].saldo + v[i].cheque); } } } else printf("Senha invalida.\n"); return; } else { if (strcmp(v[i].agencia, pesquisa_agencia) != 0) printf("\nAgencia não encontrada.\n\n"); if (strcmp(v[i].conta, pesquisa_conta) != 0) printf("\nConta não encontrada.\n\n"); } } } void deposito(struct conta v[], int *pn) { char pesquisa_agencia[TAM_MAX_AGENCIA]; char pesquisa_conta[TAM_MAX_CONTA]; int senha; double deposito; printf("\nSaque de conta\n"); printf("Agencia: "); fgetline(stdin, pesquisa_agencia, TAM_MAX_AGENCIA); printf("Conta: "); fgetline(stdin, pesquisa_conta, TAM_MAX_CONTA); printf("Senha: "); scanf("%d", &senha); int i; for (i = 0; i < *pn; i++) { if (strcmp(v[i].agencia, pesquisa_agencia) == 0 && strcmp(v[i].conta, pesquisa_conta) == 0) { if ((v[i].senha - senha) == 0) { printf("Valor do deposito: R$"); scanf("%lf", &deposito); if (deposito < 0.0 || deposito == 0.0) printf("Voce deve colocar um valor positivo"); else { v[i].saldo += deposito; printf("Deposito realizado com sucesso\n"); printf("Saldo atual: R$%.2lf\n\n", v[i].saldo + v[i].cheque); } } else printf("Senha invalida.\n"); return; } else { if (strcmp(v[i].agencia, pesquisa_agencia) != 0) printf("\nAgencia não encontrada.\n\n"); if (strcmp(v[i].conta, pesquisa_conta) != 0) printf("\nConta não encontrada.\n\n"); } } } void saldo_medio(struct conta v[], int *pn) { double media1; double media2; double soma1 = 0.0; double soma2 = 0.0; int i; for (i = 0; i < *pn; i++) { soma1 += v[i].saldo; soma2 += (v[i].saldo + v[i].cheque); } media1 = soma1 / *pn; media2 = soma2 / *pn; printf("A media dos saldos de todas as contas equivale a: R$%.2lf\n", media1); printf("A media dos saldos (contadando os valores dos cheques especiais) vale: R$%.2lf\n\n", media2); return; } void ler_arquivo(struct conta v[], int *pn) { printf("\nLeitura de arquivo do Caixa Automático\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "r"); if (f == NULL) printf("O arquivo não foi encontrado.\n"); else { *pn = 0; while (! feof(f)) { fgetline(f, v[*pn].nome, TAM_MAX_NOME); fgetline(f, v[*pn].agencia, TAM_MAX_AGENCIA); fgetline(f, v[*pn].conta, TAM_MAX_CONTA); fscanf(f, "%lf", &(v[*pn].saldo)); fscanf(f, "%d", &(v[*pn].senha)); fscanf(f, "%lf", &(v[*pn].cheque)); if (v[*pn].nome[0] != '' || strlen(v[*pn].agencia) > 0 || v[*pn].conta[0] != '') (*pn)++; } fclose(f); } printf("Numeros de clientes = %d\n", *pn); printf("Por razões de éticas o saldo da conta não são divulgaos.\n\n"); } void gravar_arquivo(struct conta v[], int n) { printf("\nGravação dos dados do Caixa eletrônico\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "w"); if (f == NULL) printf("Não foi possivel salvar o arquivo.\n"); else { int i; for (i = 0; i < n; i++) { fprintf(f, "%s\n", v[i].nome); fprintf(f, "%s\n", v[i].agencia); fprintf(f, "%s\n", v[i].conta); fprintf(f, "%lf\n", v[i].cheque); fprintf(f, "%d\n", v[i].senha); fprintf(f, "%lf\n", v[i].saldo); } fclose(f); } printf("\n"); } int main(void) { struct conta dados[TAM_MAX_CLIENTES]; int n = 0; int opcao; do { printf("============================================\n"); printf("===============Banco do Povão===============\n"); printf("============================================\n\n"); printf("==========Escolha a opção desejada==========\n"); printf("1. Abrir uma nova conta\n"); printf("2. Consultar o saldo de uma conta\n"); printf("3. Fazer um saque\n"); printf("4. Fazer um depósito\n"); printf("5. Calcular o saldo médio de todas as contas\n"); printf("6. Calcular o valor total em deposito em uma agência\n"); printf("7. Ler dados de arquivo\n"); printf("8. Gravar dados em arquivo\n"); printf("9. Terminar\n"); printf("\n"); do { printf("Escolha uma opção: "); scanf("%d", &opcao); if (opcao < 1 || opcao > 9) printf("Opção Inválida.\n"); } while (opcao < 1 || opcao > 9); getchar(); switch (opcao) { case 1: abrir_conta(dados, &n); break; case 2: consultar(dados, n); break; case 3: saque(dados, &n); break; case 4: deposito(dados, &n); break; case 5: saldo_medio(dados, &n); break; case 6: printf("Opção em construção"); case 7: ler_arquivo(dados, &n); break; case 8: gravar_arquivo(dados, n); break; case 9: break; } if (opcao == 9) printf("\nCaixa automático encerrado.\n"); } while (opcao != 9); getchar(); return 0; }
  10. Agora a duvida é na função de ler_arquivo... #include <stdio.h> #include <string.h> #include <conio.h> #define TAM_MAX_CLIENTES 1000 #define TAM_MAX_AGENCIA 10 #define TAM_MAX_CONTA 20 #define TAM_MAX_SENHA 06 #define TAM_MAX_NOME 60 struct conta { char agencia[TAM_MAX_AGENCIA]; char conta[TAM_MAX_CONTA]; int senha; char nome[TAM_MAX_NOME]; double cheque; double saldo; }; char *fgetline(FILE *f, char *s, int tamanho) { char *str = fgets(s, tamanho, f); if (str != NULL) { int n = strlen(s); if (s[n-1] == '\n') s[n-1] = ''; else while (! feof(f) && fgetc(f) != '\n'); } return str; } void abrir_conta(struct conta v[], int *pn) { printf("\nAbertura de nova conta\n"); if (*pn == TAM_MAX_CLIENTES) printf("O banco já atingiu o numero de clientes suportado pelo programa. Chame o administrador do programa para alterá-lo.\n"); else { printf("Nome do titular: "); fgetline(stdin, v[*pn].nome, TAM_MAX_NOME); printf("Numero da Agência: "); fgetline(stdin, v[*pn].agencia, TAM_MAX_AGENCIA); printf("Numero do conta: "); fgetline(stdin, v[*pn].conta, TAM_MAX_CONTA); printf("Valor do cheque especial: "); scanf("%lf", &v[*pn].cheque); printf("Saldo inicial: "); scanf("%lf", &v[*pn].saldo); printf("\n\n"); (*pn)++; } } void consultar(struct conta v[], int n) { char pesquisa_agencia[TAM_MAX_AGENCIA]; char pesquisa_conta[TAM_MAX_CONTA]; printf("\nConsulta de saldo de conta\n"); printf("Agencia: "); fgetline(stdin, pesquisa_agencia, TAM_MAX_AGENCIA); printf("Conta: "); fgetline(stdin, pesquisa_conta, TAM_MAX_CONTA); int i; for (i = 0; i < n; i++) if (strcmp(v[i].agencia, pesquisa_agencia) == 0 && strcmp(v[i].conta, pesquisa_conta) == 0) { printf("Nome do titular: %s\n", v[i].nome); printf("Saldo da conta: %.2lf\n", v[i].saldo + v[i].cheque); printf("Obs: O saldo da conta é adicionado do cheque especial.\n\n"); return; } else { if (strcmp(v[i].agencia, pesquisa_agencia) != 0) printf("Agencia não encontrada.\n"); if (strcmp(v[i].conta, pesquisa_conta) != 0) printf("Conta não encontrada.\n"); } } void ler_arquivo(struct conta v[], int *pn) { printf("\nLeitura de arquivo do Caixa Automático\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "r"); if (f == NULL) printf("O arquivo não foi encontrado.\n"); else { *pn = 0; while (! feof(f)) { fgetline(f, v[*pn].nome, TAM_MAX_NOME); fgetline(f, v[*pn].agencia, TAM_MAX_AGENCIA); fgetline(f, v[*pn].conta, TAM_MAX_CONTA); if (v[*pn].nome[0] != '' || strlen(v[*pn].agencia) > 0 || v[*pn].conta[0] != '') (*pn)++; } fclose(f); } printf("Numeros de clientes = %d\n", *pn - 1); printf("Por razões de éticas o saldo da conta não são divulgaos.\n\n"); } void gravar_arquivo(struct conta v[], int n) { printf("\nGravação dos dados do Caixa eletrônico\n"); char nome_arquivo[TAM_MAX_NOME]; printf("Nome do arquivo: "); fgetline(stdin, nome_arquivo, TAM_MAX_NOME); FILE *f = fopen(nome_arquivo, "w"); if (f == NULL) printf("Não foi possivel salvar o arquivo.\n"); else { int i; for (i = 0; i < n; i++) { fprintf(f, "%s\n", v[i].nome); fprintf(f, "%s\n", v[i].agencia); fprintf(f, "%s\n", v[i].conta); fprintf(f, "%d\n", v[i].cheque); fprintf(f, "%d\n", v[i].senha); fprintf(f, "%d\n", v[i].saldo); } fclose(f); } printf("\n"); } int main(void) { struct conta dados[TAM_MAX_CLIENTES]; int n = 0; int opcao; do { printf("===========================================\n"); printf("======Caica Eletrônico Banco do Povão======\n"); printf("===========================================\n\n"); printf("===Escolha a opção desejada===\n"); printf("1. Abrir uma nova conta\n"); printf("2. Consultar o saldo de uma conta\n"); printf("3. Fazer um saque\n"); printf("4. Fazer um depósito\n"); printf("5. Calcular o saldo médio de todas as contas\n"); printf("6. Calcular o valor toal em deposito em uma agência\n"); printf("7. Ler dados de arquivos\n"); printf("8. Gravar dados em arquivo\n"); printf("9. Terminar\n"); printf("\n"); do { printf("Escolha uma opção: "); scanf("%d", &opcao); if (opcao < 1 || opcao > 9) printf("Opção Inválida.\n"); } while (opcao < 1 || opcao > 9); getchar(); switch (opcao) { case 1: abrir_conta(dados, &n); break; case 2: consultar(dados, n); break; case 3: case 4: case 5: case 6: case 7: ler_arquivo(dados, &n); break; case 8: gravar_arquivo(dados, n); break; case 9: break; } if (opcao == 9) printf("\nCaixa automatico encerrado.\n"); } while (opcao != 9); getchar(); return 0; } Não sei o codico para ler o saldo da conta. Para ler string seria (fgetline(f, v[*pn].conta, TAM_MAX_CONTA);), mas não sei o codigo para ler double... abraço
  11. Por enquanto meu programa está assim... #include <stdio.h> #include <string.h>] #include <conio.h> #define TAM_MAX_CLIENTES 1000 #define TAM_MAX_AGENCIA 10 #define TAM_MAX_CONTA 20 #define TAM_MAX_SENHA 06 #define TAM_MAX_NOME 60 struct conta { char agencia[TAM_MAX_AGENCIA]; char conta[TAM_MAX_CONTA]; int senha; char nome[TAM_MAX_NOME]; double cheque; double saldo; }; char *fgetline(FILE *f, char *s, int tamanho) { char *str = fgets(s, tamanho, f); if (str != NULL) { int n = strlen(s); if (s[n-1] == '\n') s[n-1] = ''; else while (! feof(f) && fgetc(f) != '\n'); } return str; } void abrir_conta(struct conta v[], int *pn) { printf("\nAbertura de nova conta\n"); if (*pn == TAM_MAX_CLIENTES) printf("O banco já atingiu o numero de clientes suportado pelo programa. Chame o administrador do programa para alterá-lo.\n"); else { printf("Nome do titular: "); fgetline(stdin, v[*pn].nome, TAM_MAX_NOME); printf("Numero da Agência: "); fgetline(stdin, v[*pn].agencia, TAM_MAX_AGENCIA); printf("Numero do conta: "); fgetline(stdin, v[*pn].conta, TAM_MAX_CONTA); printf("Valor do cheque especial: "); scanf("%lf", v[*pn].cheque); printf("Saldo inicial: "); scanf("%lf", v[*pn].saldo); (*pn)++; } } void consultar(struct conta v[], int n) { char pesquisa_cliente[TAM_MAX_NOME]; printf("\nConsulta de saldo de conta\n"); printf("Nome do titular: "); fgetline(stdin, pesquisa_cliente, TAM_MAX_NOME); int i; for (i = 0; i < n; i++) if ( strcmp(v[i].nome, pesquisa_cliente) == 0) { printf("Saldo da conta: %.2lf\n", v[i].conta); return; } printf("Cliente não encontrado.\n"); } int main(void) { struct conta dados[TAM_MAX_CLIENTES]; int n = 0; int opcao; do { printf("===========================================\n"); printf("======Caica Eletrônico Banco do Povão======\n"); printf("===========================================\n\n"); printf("===Escolha a opção desejada===\n"); printf("1. Abrir uma nova conta\n"); printf("2. Consultar o saldo de uma conta\n"); printf("3. Fazer um saque\n"); printf("4. Fazer um depósito\n"); printf("5. Calcular o saldo médio de todas as contas\n"); printf("6. Calcular o valor toal em deposito em uma agência\n"); printf("7. Ler dados de arquivos\n"); printf("8. Gravar dados em arquivo\n"); printf("9. Terminar\n"); printf("\n"); do { printf("Escolha uma opção: "); scanf("%d", &opcao); if (opcao < 1 || opcao > 9) printf("Opção Inválida.\n"); } while (opcao < 1 || opcao > 9); getchar(); switch (opcao) { case 1: abrir_conta(dados, &n); break; case 2: consultar(dados, n); break; case 3: case 4: case 5: case 6: case 7: case 8: case 9: break; } if (opcao == 9) printf("\nCaixa automatico encerrado.\n"); } while (opcao != 9); getchar(); return 0; } Estava fazendo uns testes (nem tudo esta já implementado) e quando vou cadastrar o cliente o programa encerra quando digito o valor do cheque especial, creio q estou fazendo errado na hora de armazenar o dado do cheque especial, mas não sei o modo certo de fazer... Entre outras duvidas...
  12. Não to tendo ideias com o algoritmo.. me ajudem por favor
  13. A descrição do trabalho é a seguinte... Fazer um programa que simule um caixa autmático. O programa deve apresentar ao usuário um menu com opções para abrir uma nova conta consultar o saldo de uma contra fazer um saque fazer um depósito encerrar uma conta calcular o saldo médio de todas as contas calcular o valor total em depósito em uma agência ler dados de arquivo gravar dados em arquivo terminar e implementar cada uma delas. Cada conta deverá conter as informações: número da agência número da conta senha nome do titular valor do cheque especial saldo disponível Duas contas de uma mesma agência não podem ter o mesmo número. O programa deve validar todos os dados de entrada. To com muita duvida... to meio perdido... me ajudem por favor... Desde já agradeço
×
×
  • Criar Novo...