Ir para conteúdo
Fórum Script Brasil

Cleber Griff

Membros
  • Total de itens

    13
  • Registro em

  • Última visita

Sobre Cleber Griff

Cleber Griff's Achievements

0

Reputação

  1. Então, Dan.. eu não to conseguindo fazer isso da maneira correta. Ele não salva os valores no ponteiro de main. Mas, de qualquer jeito, já arrumei outra forma de fazer, obrigado!
  2. Tenho esse código e, como podem ver, as variáveis Lista *inicio e Lista *fim estão globais, como eu passo elas para local? #include<stdio.h> #include<stdlib.h> typedef struct lista{ int info; struct lista *prox; }Lista; Lista *inicio=NULL, *fim=NULL; int inserir_lista(int elem, int pos){ Lista *no; no = (Lista*) malloc (sizeof(Lista)); if(no==NULL) return 0; else{ no->info=elem; if(inicio==NULL){ inicio=no; fim=no; no->prox=NULL; return 1; } else{ if(pos==1){ no->prox=inicio; inicio=no; return 1; } else if(pos==2){ fim->prox=no; no->prox=NULL; fim=no; return 1; } else{ int achou=0; int item; Lista *aux=inicio; printf("Inserir apos qual elemento?\n"); scanf("%d", &item); while(aux!=NULL){ if(aux->info==item){ no->prox=aux->prox; aux->prox=no; achou=1; if(aux==fim){ fim=no; break; } } aux=aux->prox; } return achou; } } } } void imprimir_lista(){ Lista *aux; aux = (Lista*) malloc (sizeof(Lista)); aux = inicio; while(aux!=NULL){ printf("\n%d", aux->info); aux=aux->prox; } } void ordenada(){ Lista *aux, *proxima; int ordenada=0; aux = (Lista*) malloc (sizeof(Lista)); proxima = (Lista*) malloc (sizeof(Lista)); aux = inicio; if(aux==NULL){ printf("\n\nLista vazia\n\n"); } else if(aux->prox==NULL){ printf("\n\nLista contem apenas 1 elemento\n\n"); } else{ proxima=aux->prox; if(aux->info < proxima->info){ while(proxima!=NULL){ if(aux->info < proxima->info){ ordenada=1; aux=aux->prox; proxima=proxima->prox; } else{ ordenada=0; break; } } } else{ aux=inicio; proxima=aux->prox; while(proxima!=NULL){ if(aux->info > proxima->info){ ordenada=1; aux=aux->prox; proxima=proxima->prox; } else{ ordenada=0; break; } } } if(ordenada) printf("\n\nLista ordenada\n\n"); else printf("\n\nLista não-ordenada\n\n"); } } int main(){ int elem, pos, opcao; do{ printf("\n\nEscolha opcao: \n1- Inserir na lista\n2- Verificar - Ordenada\n3- Exibir lista\n4- Copiar lista\n5- Sair\n>>>> "); scanf("%d", &opcao); if(opcao==1){ printf("\nInforme o elemento:\n"); scanf("%d", &elem); printf("Aonde deseja inserir?\n1- Inicio\n2- Fim\n3- Apos determinado numero\n"); scanf("%d", &pos); if (inserir_lista(elem, pos)) printf("\nElemento inserido com sucesso"); else printf("Erro"); } if(opcao==2) ordenada(); if(opcao==3) imprimir_lista(); }while(opcao!=5); }
  3. Valeu, PedroCunha. Mas só posso usar C :~~ Consegui fazer o programa, fica aí pra quem precisar #include<stdio.h> #include<stdlib.h> typedef struct contas{ //Tipo de dado que caracteriza a criação de uma conta char num_conta[5], nome[40]; float saldo; }contas; typedef struct transacoes{ //Tipo de dado referente a uma transação float valor; char tipo_trans, num_conta[5]; }transacoes; void cria_conta(){ //Função para criar uma nova conta FILE *fp; contas nova_conta; fp = fopen("contas.bin", "ab+"); //Abre ou cria o arquivo contas.bin para adicionar dados if(fp == NULL){ printf("Erro ao abrir arquivo"); exit(1); } else{ system("cls"); //A seguir, captura os dados referentes à nova conta printf("=== NOVA CONTA ==="); printf("\nNome do cliente: "); gets(nova_conta.nome); printf("\nNo. da conta (5 digitos): "); gets(nova_conta.num_conta); printf("\nSaldo: "); scanf("%f", &nova_conta.saldo); fflush(stdin); fwrite(&nova_conta, sizeof(contas), 1, fp); //Grava os dados em contas.bin fclose(fp); printf("\n\nDados salvos com sucesso!\n\n"); system("pause"); } } void verifica_saldo(){ //Função para verificar o saldo de determinada conta FILE *fp; contas conta; int busca_conta, encontrou=0; //Encontrou é usado para verificar se a conta existe fp = fopen("contas.bin", "rb"); //Abre contas.bin para leitura if(fp == NULL){ printf("Erro na abertura do arquivo"); exit(2); } else{ system("cls"); printf("Informe os 5 digitos do No. da conta: "); scanf("%d", &busca_conta); //Captura os dígitos da conta que o usuário deseja fflush(stdin); while(!feof(fp)){ //Varre o arquivo contas.bin até encontrar o fim do arquivo fread(&conta, sizeof(contas), 1, fp); //Armazena a informação na variável conta if(atoi(conta.num_conta)== busca_conta){ //Converte a string conta.num_conta para inteiro e compara com busca_conta printf("\n\nConta %s\nSaldo: %.2f\n\n", conta.num_conta, conta.saldo); //Exibe os dados da conta encontrou=1; //Altera o estado de encontrou para 1 break; } } if(encontrou==0) printf("\nNada encontrado!\n\n"); //Case encontrou esteja em 0, nenhum arquivo foi encontrado. Isso é exibido ao usuário system("pause"); } } void faz_transacao(){ //Função para realizar uma transação FILE *contasbin; //Vai abrir o arquivo contas.bin FILE *movimentbin; //Vai abrir o arquivo moviment.bin transacoes trans; //Variável para armazenar a transação contas id; //Variável para armazenar a conta int encontrou=0; contasbin = fopen("contas.bin", "rb+"); //Abre contas.bin para leitura e gravação (atualizar os dados) if(contasbin==NULL){ printf("\nErro ao abrir o arquivo contas.bin"); exit(1); } else{ movimentbin = fopen("moviment.bin", "ab+"); //Só tenta abrir moviment.bin se existir contas.bin if(movimentbin==NULL){ printf("\nErro ao abrir o arquivo moviment.bin"); exit(2); } else{ system("cls"); //Se os arquivos contas.bin e moviment.bin estiverem criados e abertos, então recolhe os dados da transação printf("==== NOVA TRANSACAO ===="); printf("\n\nNo. da conta: "); gets(trans.num_conta); while(!feof(contasbin)){ //Varre o arquivo até o final fread(&id, sizeof(contas), 1, contasbin); //Lê os dados de contas.bin e armazena em id if(atoi(id.num_conta)==atoi(trans.num_conta)){ //Converte as string para inteiro e compara-as encontrou=1; //Muda o estado de encontrou para 1 printf("\nConta %s\nSaldo atual: %.2f", id.num_conta, id.saldo); printf("\n\nTipo de transacao \n(S - Saque / D- Deposito)\n >>> "); scanf("%c", &trans.tipo_trans); //Captura o tipo de transação (Saque ou Depósito) fflush(stdin); //Limpa o buffer do teclado trans.tipo_trans=toupper(trans.tipo_trans); //Transforma o caractere para maiúsculo printf("\n\nValor da transacao: "); scanf("%f", &trans.valor); fflush(stdin); if(trans.tipo_trans=='S'){ //Se a opção escolhida foi saque id.saldo=id.saldo-trans.valor; fseek(contasbin, (-1)*sizeof(contas), SEEK_CUR); //Leva o cursor para o início da conta atualmente em id fwrite(&id, sizeof(contas), 1, contasbin); //Grava os novos dados da conta printf("Novo saldo da conta %s\n%.2f\n\n", id.num_conta, id.saldo); break; } if(trans.tipo_trans=='D'){ //Se a opção foi depósito id.saldo=id.saldo+trans.valor; fseek(contasbin, (-1)*sizeof(contas), SEEK_CUR); //Leva o cursor para o início da conta atualmente em id fwrite(&id, sizeof(contas), 1, contasbin); //Grava os novos dados da conta printf("Novo saldo da conta %s\n%.2f\n\n", id.num_conta, id.saldo); break; } } } if(encontrou==0) printf("\nConta não encontrada\n\n"); //Caso a variável encontrou armazenar 0, a conta não foi encontrada if(encontrou==1) fwrite(&trans, sizeof(transacoes), 1, movimentbin); //Caso contenha 1, a transação foi realizada e é então salva em moviment.bin //Fecha os arquivos fclose(contasbin); fclose(movimentbin); system("pause"); } } } int main(int argc, char *argv[]){ int opt; do{ //Exibe um menu com as opções até a opção de SAIR ser selecionada system("cls"); printf("Escolha uma opcao:\n1- Criar conta\n2- Verificar saldo\n3- Realizar transacao\n4- Sair\n\t\t>>> "); scanf("%d", &opt); fflush(stdin); if(opt==1) cria_conta(); if(opt==2) verifica_saldo(); if(opt==3) faz_transacao(); }while(opt!=4); return 0; }
  4. Galera, to com um probleminha aqui em um trabalho da facul. Aqui está a descrição do que estou com problema. 2- Considere os seguintes arquivos binários: • “contas.bin”: contém registros de contas bancárias de uma determinada agência. Cada registro armazena as seguintes informações sobre uma conta bancária: número da conta (cadeia de 5 caracteres), nome do cliente (cadeia de 40 caracteres) e saldo (valor real); • “moviment.bin”: contém registros de movimentações feitas (depósitos ou saques) em contas bancárias. Cada registro armazena as seguintes informações sobre uma movimentação: número da conta movimentada (cadeia de 5 caracteres), tipo da movimentação (um caractere, podendo ser ‘S’ para saque e ‘D’ para depósito) e valor da movimentação (valor real). Faça um programa que atualize o saldo das contas bancárias contidas no arquivo “contas.bin” de acordo com as movimentações contidas no arquivo “moviment.bin”. Como eu atualizo os dados de um arquivo binário? Não faço ideia :~( Eu posto o código mais tarde, se for necessário. Ele ficou meio confuso.
  5. Certo, valeuzão, mJi! Vamos ver se entendi. Se fosse usar o <iostream> no lugar do <stdio.h>, o certo seria assim? cout << frases[rand()%3]; Sou meio leigo ainda, obrigado :)
  6. Como diz a descrição, Ex.: cout << "Frase 1"; cout << "Frase 2"; cout << "Frase 3"; Gostaria de saber como faço para o programa exibir aleatoriamente a mensagem 1, 2 ou 3. Alguma ideia?
  7. Opa, essa função é bem interessante, bruce845! Valeu pela dica
  8. Ok, mJi! Creio que suas respostas serão de extrema utilidade. Abraços!
  9. Olá, mJi! Vou tentar criar uma matriz, vejo que vai ser muito útil! Quanto a converter os caracteres para maiúsculo, poderia me dizer como faço isso? Desculpas pela leiguice :)
  10. Estou criando um programa para exibir a ficha de um carro segundo informações do usuário: Marca, Modelo, Placa, etc.. Dúvida 1: como faço para criar uma espécie de "Lista" com o nome das marcas de carro, para o programa retornar um "Marca inexistente". Também tenho a dúvida de como "liberar" os modelos segundo a marca, sem utilizar tantos if's quanto estou pensando. Vou precisar aprender a lidar com Banco de Dados? Dúvida 2: queria um modo de escrever "FIAT", "Fiat" ou "fiat" sem diferenciar uma da outra no programa (quando o usuário digitar a marca, independente de maiuscula ou minuscula, ele vai cair no mesmo lugar). Agradeço a todos que puderem me ajudar!
  11. Ok, obrigado pela dica. Vou tentar Desculpe pela demora para responder, estive meio ausente nos ultimos dias :) Abraços!
  12. Alguém pode me ajudar? Ou indicar alguma coisa, sei lá :/
  13. Olá a todos do Fórum Script Brasil! Sou 'iniciante' em linguagens de programação e gostaria de uma ajuda dos mais experientes. 'Iniciante' porque já tenho contato com programação há algum tempo (C++, no caso), mas cheguei a um ponto que não sei para onde seguir. Consigo dominar o básico, como cálculos, int, float, if, do, while, switch, etc. O que eu gostaria é de alguma sugestão, melhor dizendo, um Plano de Estudo que eu possa seguir sem medo de deixar algo importante para trás. Algo do tipo "Primeiro aprenda tal, tal, tal..", "Após dominar bem o primeiro passo, faça tal, tal, tal" Antecipadamente agradeço a todos!
×
×
  • Criar Novo...