Ir ao conteúdo

Posts recomendados

Postado
/*Aplique o conceito de funções recursivas, direta e indiretas, para as operações em um caixa eletrõnico:
depósito
saque
saldo
troca de senha
OBS: permitir ao usuário errar apenas 3 vezes a senha, senão bloqueia
Dica 1: crie uma função só para validar a senha
Dica 2: utilize a estrutura vetor para armazenar os dados das contas:
- número de conta
- saldo
-senha*/

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

//prototipação
void validarLogin();
void validarSenha();
void TrocarSenha();
void Relatorio();
void menu();
void tipodeconta();
void Removerconta();
void depositar();
void sacar();
void resumodaatividade();
//variáveis global
int erro=0;
int y,m,opcao,remover,v, op1, op2,nc,agencia[ 50],CPF [ 50],telefone [ 50 ],conta [50];
char pwd [10] , SENHA [10], endereco [ 50 ], CONFSENHA [10],nome [50];
float saldo [100000000000],creditar,debitar;

	
	
int main ( ) {
 
				setlocale ( LC_ALL, "português" );
j:
	printf ("Digite quantas contas contas deseja criar!\n") ;
	scanf ( "%d",&nc) ;
	menu();
	

	scanf ( "%d" , &opcao ) ;
	
	do {
 
	switch ( opcao ) {
 
 
    case  1 :
    tipodeconta();
    
      	           
    case  2 :
    Relatorio();
    
    case  3  :
    Removerconta();
     
    case  4 :
    depositar();
    
    case  5 :
    sacar();
             
    case  6 :
    resumodaatividade();
        
    case 7:
    TrocarSenha();
		
	
 
    }
printf ("==========================================================\n"
"================ ....SAINDO DO SISTEMA...=================\n"
"==========================================================\n\n" ) ;
goto j ;
 
} while ( opcao != 8 ) ;
 
 
    system("cls");
}

void menu(){
j :
printf ( "\n---------------------Sejam Bem Vindos!!!!-----------------\n"
"\n--------------BANCO *************************-------------\n"
"\n-------------------------- MENU --------------------------\n"
"\n------------------------ PRINCIPAL -----------------------\n"
" | <1> Criar Conta|\n "
"| <2> Consultar Conta|\n "
"| <3> Remover Conta|\n "
"| <4> Depósito|\n "
"| <5> Saque|\n "
"| <6> Resumo das atividades|\n "
"| <7> Redefinição de senha\n"
" | <8> Sair do Sistema|\n "
"\n----------------------------------------------------------\n");
 
}
void tipodeconta(){
	j:
	printf ( "Que tipo de conta você deseja Criar?\n" );
      printf ( " 1 - Conta Corrente\n 2 - Conta Poupança\n" );
      scanf ("%d" , &op1 ) ;
      system("cls");
 
 
    if ( op1 == 1 ) {
      y ++;    
    conta [ y ] = y ; 
 
    printf ( "Crie sua CONTA CORRENTE!\n " ) ;
 
    printf ( "Numero da conta ->%d\n\n" , conta [ 50 ] ) ;
    conta [ y ]++;
    printf ( "Digite a agencia:\n" ) ;
    scanf ( "%d" , &agencia [ 50] ) ;
    printf ( "Digite o saldo:\n" ) ;
    scanf ( "%f" , &saldo [ 50 ] ) ;
    saldo[y]++;
    printf ( "Digite sua SENHA:\n" ) ;
    scanf ( "%s" , &SENHA [ 50 ] ) ;
    printf ( "Digite o nome:\n" ) ;
    scanf ( "%s" , &nome [ 50 ] ) ;
    printf ( "Digite o CPF:\n" ) ;
    scanf ( "%d," , &CPF [ 50 ] ) ;
    printf ( "Digite o endereço:\n " ) ;
    scanf ( "%s" , &endereco [ 50 ] ) ;
    printf ( "Digite o telefone:\n " ) ;
    scanf ( "%d", &telefone [ 50 ] ) ;
    printf ( "| **************************** |\n" ) ;
    printf ( "| CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
    printf ( "| **************************** |\n " ) ;
    scanf ( "%d", &m ) ;
	{
    goto j ;
    }
	}
	
    
    else  if ( op1 == 2 ) {
 
    printf ( "Crie uma CONTA POUPANÇA!\n " ) ;
    printf ( "Numero da conta ->%d\n" , conta [ 50 ] ) ;
    conta [ y ]++;
    printf ( "\nDigite a agencia:\n" ) ;
    scanf ( "%d", &agencia [ 50 ] ) ;
    printf ( "Digite o saldo:\n" ) ;
    scanf ( "%f", &saldo [ 50 ] ) ;
    saldo [y]++;
    printf ( "Digite o nome:\n" ) ;
    scanf ( "%s", &nome [ 50 ] ) ;
    printf ( "Digite sua SENHA:\n" ) ;
    scanf ( "%s" , &SENHA [ 50 ] ) ;
    printf ( "Digite o CPF:\n" ) ;
    scanf ( "%d" , &CPF [ 50 ] ) ;
    printf ( "Digite o endereço:\n" ) ;
    scanf ( "%s" , &endereco [ 50 ] ) ;
    printf ( "Digite o telefone:\n" ) ;
    scanf ( "%d" , &telefone [ 50 ] ) ;
    printf ( " | **************************** |\n" ) ;
    printf ( " | CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
    printf ( "| **************************** |\n\n " ) ;
    scanf ( "%d", &m ) ;
	{
    goto j ;
    }
	
}}

void Relatorio(){
	int a;
	j:
    printf ( "Digite o Numero Da Conta:\n" ) ;
    scanf ( "%d" , &a ) ;
    system("cls");
 
    printf ( "INFORMAÇOES INPORTANTES DA CONTA\n " ) ;
 
    printf ( "\nNome: %s", nome [ a ] ) ;
    printf ( "\nCPF:%d", CPF [ a ] ) ;
    printf ( "\nENDEREÇO: %s", endereco [ a ] ) ;
    printf ( "\nTELEFONE:%d", telefone [ a ] ) ;
    printf ( "\nSALDO R$=%.2f", saldo [ a ] ) ;
    printf ( "\nAGENCIA:%d", agencia [ a ] ) ;
 
    printf ("\nvoltar-0\n" ) ;
    scanf ( "%d" , & m ) ;
    if ( m == 0 ){
    goto j ;
        }
   
}
void depositar(){
	j:
	printf ( "Digite o número para Depósito:" ) ;
    scanf ( "%d", &op2 ) ;
    printf ( "\ncliente:%s", nome [ op2 ] ) ;
    printf ( "\nSaldo R$= %.2f", saldo [ op2 ] ) ;
 
    printf ( "\nInforme o valor a ser Depositado:" ) ;
    scanf ( "%f" , &creditar ) ;
    ( saldo [ op2 ] = saldo [ op2 ] + creditar ) ;                 
    printf ( "\nValor do Depósito R$=%.2f, seu Saldo mais Depósito é de: R$=%.2f" ,creditar, saldo [ op2 ]);
    printf ("\n\n=========creditado com SUCESSO!!=========") ;
    printf ( "\nvoltar-0\n" ) ;
    scanf ( "%d" , &m ) ;
    goto j ;
	
}

void sacar(){
	j:
	printf ( "Digite o número da conta para saque:" ) ;
    scanf ( "%d" , &op2 ) ;
    printf ( "\nNome:%s" , nome [ op2 ] ) ;
    printf ( "\nSaldo R$=%.2f" , saldo [ op2 ] ) ;
    printf ( "\nInforme o valor a ser Debitado:" ) ;
    scanf ( "%f" , &debitar ) ;
    (saldo [ op2 ] = saldo [ op2 ] - debitar ) ;
	if (debitar>saldo [ op2 ]){
    	printf("\nVocê não posuui SALDO SUFICIENTE!!!");
	}  
	else{
	printf ( "\nSALDO TOTAL É DE: R$=%.2f", saldo [ op2 ] ) ;
    printf ( "\nSaque realizado com SUCESSO!!\n" ) ;
	}
    printf ( "\nvoltar-0\n " ) ;
    scanf ( "%d" , &v ) ;
    goto j ;
}

void validarLogin(){
	char y;
	char usuario[y] , nome [ y ];
	printf("\nUsuário: ");
	scanf("%s", &usuario);
	if(strcmp (usuario,nome) == 0)
		validarSenha();
		else
		validarLogin();
	
}
void validarSenha(){
	int y;
	char pwd [y] , SENHA [ y ];
	printf("\nSenha: ");
	scanf("%s", &pwd);
	
	if (strcmp (pwd,SENHA)==0)
	puts("\nLogin efetuado com sucesso - Acesso LIBERADO!!!");
	else
	{
	erro++;
	if (erro==3)
	puts("\nSenha Bloqueada - Acesso NEGADO procure o administrador...");
	else
	{
	if(erro == 2)
	printf("Senha errado voce so tem mais uma chances");
	else
	printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
	validarLogin();
	}
}
}
void resumodaatividade(){
	j:
	 printf ( "RESUMO DAS ATIVIDADES REALIZADAS\n" ) ;
 
    for ( op2 = 0 ; op2 < nc ; op2 ++ ) {
    printf ( "\nCONTA:\n%d" , conta [ 50 ] ) ;
    printf ( "\nNOME: \n%s" , nome [ 50 ] ) ;
    printf ( "\nSALDO:\n%f" , saldo [100000000000] ) ;
    }
    printf ( "\nvoltar-0\n" ) ;
    scanf ( "%d", &m ) ;
    if ( m == 0 ) {
    goto j ;
        }
}

void TrocarSenha(){
	j:
	printf("\nDigite a Senha Atual: ");
	scanf("%s", &pwd);
	printf("\nDigite a Nova Senha: ");
	scanf("%s", &SENHA);
	printf("\nDigite a Nova Senha: ");
	scanf("%s", &CONFSENHA);
	if (strcmp (CONFSENHA,SENHA)==0)
	puts("\nSenha alterada com sucesso - Acesso LIBERADO!!!");
	else
	{
	erro++;
	if (erro==3)
	puts("\nSenha ERRADA - Acesso NEGADO procure o administrador...");
	else
	{
	if(erro == 2)
	printf("Senha errado voce so tem mais uma chances");
	else
	printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
	}
		}
		goto j;
}

void Removerconta(){
	j:
	printf ( "*************** REMOVER CONTA *******************" ) ;
    printf ( "\n\nDigite quaquer numero para continuar ...\n\n" ) ;
    scanf ( "%d", &op2 ) ;
    system("cls");           
    printf ( "Digite o número da conta\n" ) ;
    scanf ( "%d", &conta [ op2 ] ) ;
    printf ( "TEM CERTESA que desseja remover sua conta?" ) ;
    printf ( "\n\n 1-SIM 2-NAO\n\n" ) ;
    scanf ( " %d" , &remover ) ;            
     if  ( remover == 1 ) {
        printf ( "Conta Removida com sucesso !!!\n" ) ;
        goto j ;
 
        } else  {
         system("cls");
         goto j ;
    }
	
}
	

 

  • Obrigado 1
Postado

@darcio ramires      seu código está compilando funcionando , e você não disse qual função você quer chamar de dentro de outra , seria bom fazer uma identação do código , pois assim facilita detectar erros . 

/*
    Aplique o conceito de funções recursivas, direta e indiretas, para as operações em um caixa eletrõnico:
    depósito
    saque
    saldo
    troca de senha
    OBS: permitir ao usuário errar apenas 3 vezes a senha, senão bloqueia
    Dica 1: crie uma função só para validar a senha
    Dica 2: utilize a estrutura vetor para armazenar os dados das contas:
    - número de conta
    - saldo
    -senha
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
//prototipação
void validarLogin();
void validarSenha();
void TrocarSenha();
void Relatorio();
void menu();
void tipodeconta();
void Removerconta();
void depositar();
void sacar();
void resumodaatividade();
//variáveis global não é boa norma
int   erro=0;
int   y,m,opcao,remover,v, op1, op2,
      nc,agencia[ 50],CPF [ 50],
      telefone [ 50 ],conta [50];
char  pwd [10] , SENHA [10],
      endereco [ 50 ], CONFSENHA [10],
      nome [50];
float saldo [10000],creditar,debitar;
int main()
{
    setlocale ( LC_ALL, "português" );
    j:
	printf ("Digite quantas contas contas deseja criar!\n") ;
	scanf ( "%d",&nc) ;
	menu();
	scanf ( "%d" , &opcao ) ;
    do
    {
        switch ( opcao )
        {
        case  1 :
            tipodeconta();
            break;
        case  2 :
            Relatorio();
            break;
        case  3  :
            Removerconta();
            break;
        case  4 :
            depositar();
            break;
        case  5 :
            sacar();
            break;
        case  6 :
            resumodaatividade();
            break;
        case 7:
            TrocarSenha();
            break;
        case 8:
            printf("Saindo Do Preograma . . . !\n\n\n\a");
            printf ("==========================================================\n"\
            "================ ....SAINDO DO SISTEMA...=================\n"\
            "==========================================================\n\n" ) ;
            continue;
            break;
        default:
            printf("opcao invalida !\n");
        }
        goto j ;
    }while( opcao != 8 );
    system("cls");
    return 256;
}
void menu()
{
        printf("---------------------Sejam Bem Vindos!!!!-----------------\n"
               "--------------BANCO *************************-------------\n"
               "-------------------------- MENU --------------------------\n"
               "------------------------ PRINCIPAL -----------------------\n"
               " | <1> Criar Conta|\n"
               " | <2> Consultar Conta|\n"
               " | <3> Remover Conta|\n"
               " | <4> Depósito|\n"
               " | <5> Saque|\n"
               " | <6> Resumo das atividades|\n"
               " | <7> Redefinição de senha\n"
               " | <8> Sair do Sistema|\n"
               "----------------------------------------------------------\n");
}
void tipodeconta()
{
    j:
        printf ( "Que tipo de conta você deseja Criar?\n" );
        printf ( " 1 - Conta Corrente\n 2 - Conta Poupança\n" );
        scanf ("%d" , &op1 ) ;
        system("cls");
        if ( op1 == 1 )
        {
            y ++;
            conta [ y ] = y ;
            printf ( "Crie sua CONTA CORRENTE!\n " ) ;
            printf ( "Numero da conta ->%d\n\n" , conta [ 50 ] ) ;
            conta [ y ]++;
            printf ( "Digite a agencia:\n" ) ;
            scanf ( "%d" , &agencia [ 50] ) ;
            printf ( "Digite o saldo:\n" ) ;
            scanf ( "%f" , &saldo [ 50 ] ) ;
            saldo[y]++;
            printf ( "Digite sua SENHA:\n" ) ;
            scanf ( "%s" , &SENHA [ 50 ] ) ;
            printf ( "Digite o nome:\n" ) ;
            scanf ( "%s" , &nome [ 50 ] ) ;
            printf ( "Digite o CPF:\n" ) ;
            scanf ( "%d," , &CPF [ 50 ] ) ;
            printf ( "Digite o endereço:\n " ) ;
            scanf ( "%s" , &endereco [ 50 ] ) ;
            printf ( "Digite o telefone:\n " ) ;
            scanf ( "%d", &telefone [ 50 ] ) ;
            printf ( "| **************************** |\n" ) ;
            printf ( "| CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
            printf ( "| **************************** |\n " ) ;
            scanf ( "%d", &m ) ;
            goto j ;
        }
        else
        {
            if ( op1 == 2 )
            {
                printf ( "Crie uma CONTA POUPANÇA!\n " ) ;
                printf ( "Numero da conta ->%d\n" , conta [ 50 ] ) ;
                conta [ y ]++;
                printf ( "\nDigite a agencia:\n" ) ;
                scanf ( "%d", &agencia [ 50 ] ) ;
                printf ( "Digite o saldo:\n" ) ;
                scanf ( "%f", &saldo [ 50 ] ) ;
                saldo [y]++;
                printf ( "Digite o nome:\n" ) ;
                scanf ( "%s", &nome [ 50 ] ) ;
                printf ( "Digite sua SENHA:\n" ) ;
                scanf ( "%s" , &SENHA [ 50 ] ) ;
                printf ( "Digite o CPF:\n" ) ;
                scanf ( "%d" , &CPF [ 50 ] ) ;
                printf ( "Digite o endereço:\n" ) ;
                scanf ( "%s" , &endereco [ 50 ] ) ;
                printf ( "Digite o telefone:\n" ) ;
                scanf ( "%d" , &telefone [ 50 ] ) ;
                printf ( " | **************************** |\n" ) ;
                printf ( " | CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
                printf ( "| **************************** |\n\n " ) ;
                scanf ( "%d", &m ) ;
                goto j ;
            }
        }
}
void Relatorio()
{
    int a;
    j:
        printf( "Digite o Numero Da Conta :\n" ) ;
        scanf ( "%d" , &a ) ;
        system("cls");
        printf("INFORMAÇOES INPORTANTES DA CONTA :\n "   );
        printf("Nome ----------: %s  \n", nome [ a ]     );
        printf("CPF -----------: %d  \n", CPF [ a ]      );
        printf("ENDEREÇO ------: %s  \n", endereco [ a ] );
        printf("TELEFONE ------: %d  \n", telefone [ a ] );
        printf("SALDO R$ ------= %.2f\n", saldo [ a ]    );
        printf("AGENCIA -------: %d  \n", agencia [ a ]  );
        printf("voltar ------- =  0  \n"                 );
        scanf ( "%d" , & m ) ;
        if ( m == 0 )
            goto j ;
}
void depositar()
{
    j:
        printf ( "Digite o número para Depósito:" ) ;
        scanf ( "%d", &op2 ) ;
        printf ( "\ncliente:%s", nome [ op2 ] ) ;
        printf ( "\nSaldo R$= %.2f", saldo [ op2 ] ) ;
        printf ( "\nInforme o valor a ser Depositado:" ) ;
        scanf ( "%f" , &creditar ) ;
        saldo [ op2 ] = saldo [ op2 ] + creditar;
        printf ( "\nValor do Depósito R$=%.2f, seu Saldo mais Depósito é de: R$=%.2f" ,creditar, saldo [ op2 ]);
        printf ("\n\n=========creditado com SUCESSO!!=========") ;
        printf ( "\nvoltar-0\n" ) ;
        scanf ( "%d" , &m ) ;
        goto j ;
}
void sacar()
{
    j:
        printf ( "Digite o número da conta para saque:" ) ;
        scanf ( "%d" , &op2 ) ;
        printf ( "\nNome:%s" , nome [ op2 ] ) ;
        printf ( "\nSaldo R$=%.2f" , saldo [ op2 ] ) ;
        printf ( "\nInforme o valor a ser Debitado:" ) ;
        scanf ( "%f" , &debitar ) ;
        saldo [ op2 ] = saldo [ op2 ] - debitar;
        if (debitar>saldo [ op2 ])
        {
            printf("\nVocê não posuui SALDO SUFICIENTE!!!");
        }
        else
        {
            printf ( "\nSALDO TOTAL É DE: R$=%.2f", saldo [ op2 ] ) ;
            printf ( "\nSaque realizado com SUCESSO!!\n" ) ;
        }
        printf ( "\nvoltar-0\n " ) ;
        scanf ( "%d" , &v ) ;
        goto j ;
}
void validarLogin()
{
    char y;
    char usuario[y] , nome [ y ];
    printf("\nUsuário: ");
    scanf("%s", &usuario);
    if(strcmp (usuario,nome) == 0)
        validarSenha();
    else
        validarLogin();
}
void validarSenha()
{
    int y;
    char pwd [y] , SENHA [ y ];
    printf("\nSenha: ");
    scanf("%s", &pwd);
    if (strcmp (pwd,SENHA)==0)
        puts("\nLogin efetuado com sucesso - Acesso LIBERADO!!!");
    else
    {
        erro++;
        if (erro==3)
            puts("\nSenha Bloqueada - Acesso NEGADO procure o administrador...");
        else
        {
            if(erro == 2)
                printf("Senha errado voce so tem mais uma chances");
            else
                printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
                validarLogin();
        }
    }
}
void resumodaatividade()
{
    j:
        printf ( "RESUMO DAS ATIVIDADES REALIZADAS\n" ) ;
        for ( op2 = 0 ; op2 < nc ; op2 ++ )
        {
            printf ( "\nCONTA:\n%d" , conta [ 50 ] ) ;
            printf ( "\nNOME: \n%s" , nome [ 50 ] ) ;
            printf ( "\nSALDO:\n%f" , saldo [1000000] ) ;
        }
        printf ( "\nvoltar-0\n" ) ;
        scanf ( "%d", &m ) ;
        if ( m == 0 )
        {
            goto j ;
        }
}
void TrocarSenha()
{
    j:
        printf("\nDigite a Senha Atual: ");
        scanf("%s", &pwd);
        printf("\nDigite a Nova Senha: ");
        scanf("%s", &SENHA);
        printf("\nDigite a Nova Senha: ");
        scanf("%s", &CONFSENHA);
        if (strcmp (CONFSENHA,SENHA)==0)
            puts("\nSenha alterada com sucesso - Acesso LIBERADO!!!");
        else
        {
            erro++;
            if (erro==3)
                puts("\nSenha ERRADA - Acesso NEGADO procure o administrador...");
            else
            {
                if(erro == 2)
                    printf("Senha errado voce so tem mais uma chances");
                else
                    printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
            }
        }
        goto j;
}
void Removerconta()
{
    j:
        printf ( "*************** REMOVER CONTA *******************" ) ;
        printf ( "\n\nDigite quaquer numero para continuar ...\n\n" ) ;
        scanf ( "%d", &op2 ) ;
        system("cls");
        printf ( "Digite o número da conta\n" ) ;
        scanf ( "%d", &conta [ op2 ] ) ;
        printf ( "TEM CERTESA que desseja remover sua conta?" ) ;
        printf ( "\n\n 1-SIM 2-NAO\n\n" ) ;
        scanf ( " %d" , &remover ) ;
        if  ( remover == 1 )
        {
            printf ( "Conta Removida com sucesso !!!\n" ) ;
            goto j ;
        }
        else
        {
            system("cls");
            goto j ;
        }
}

 

Postado

@devair1010 Obrigado pela força. Então eu queria chamar a função menu() dentro da função tipodeconta(). o usuário cria a conta e automaticamente volta para o menu principal, nas funções saque e relatório eu queria chamar a função validarlogin o usuário realiza a atividade e o sistema chama a função menu. 

  • Obrigado 1
Postado

@darcio ramires   para chamar uma função Qualquer , basta você colocar o nome da função ,  e na Função relatório  poderia ser assim  :

void Relatorio()
{
    int a;
    j:
        printf( "Digite o Numero Da Conta : "            ) ;
        scanf ( "%d" , &a ) ;
        cls
        printf("INFORMAÇOES INPORTANTES DA CONTA :\n "   );
        printf("Nome ----------: %s  \n", nome     [ a ] );
        printf("CPF -----------: %d  \n", CPF      [ a ] );
        printf("ENDEREÇO ------: %s  \n", endereco [ a ] );
        printf("TELEFONE ------: %d  \n", telefone [ a ] );
        printf("SALDO R$ ------= %.2f\n", saldo    [ a ] );
        printf("AGENCIA -------: %d  \n", agencia  [ a ] );
        printf(" Tecle 0 para voltar ao Menu "           );
        a = getch() - 48;
        if ( a == 0 )return;
        printf("\n");
        goto j ;
}

e nas outras para validar login , você pode inserir a chamada no início da função , assim  :

void sacar()
{
    validarLogin();
    j:
        printf( "Digite o número da conta para saque:"   ) ;
        scanf ( "%d" , &op2                              ) ;
        printf( "\nNome:%s" , nome        [ op2 ]        ) ;
        printf( "\nSaldo R$=%.2f" , saldo [ op2 ]        ) ;
        printf( "\nInforme o valor a ser Debitado:"      ) ;
        scanf ( "%f" , &debitar                          ) ;
        saldo [ op2 ] = saldo             [ op2 ] - debitar;
        if (debitar>saldo                 [ op2 ]          )
        {
            printf("\nVocê não posuui SALDO SUFICIENTE!!!");
        }
        else
        {
            printf( "\nSALDO TOTAL É DE: R$=%.2f", saldo [ op2 ] ) ;
            printf( "\nSaque realizado com SUCESSO!!\n"          ) ;
        }
        printf( "\n   Tecle zero para voltar ao Menu De opções " );
        v = getch() - 48;
        if(v == 0)return;
        goto j ;
}

 

  • Curtir 1
Postado
2 horas atrás, darcio ramires disse:

@arfneto quando coloco a função menu() dentro de outra função o menu retorna dobrado

 

Poste um código completo de onde acontece isso.

 

Sobre seu programa:

 

Seu programa ainda não está bom e do modo como o está escrevendo vai dar um trabalho danado para concluir. Escreva em torno dos seus dados e preste atenção ao modo como representa as coisas de que precisa. Não escreva uma única linha sem uma razão sólida. Demora muito mais para consertar depois.

 

/*
  Aplique o conceito de funções recursivas, direta e indiretas, 
  para as operações em um caixa eletrõnico:
	depósito
	saque
	saldo
	troca de senha
OBS: permitir ao usuário errar apenas 3 vezes a senha, senão bloqueia
	Dica 1: crie uma função só para validar a senha
	Dica 2: utilize a estrutura vetor para armazenar os dados das contas:
	- número de conta
	- saldo
	-senha
*/

 

  • O que é uma "função recursiva indireta"? Já usou isso?
  • Já escreveu outros programas?
  • Tem um livro ou dois sobre a linguagem?
  • Tem um site que você consulta?

O problema com switch():
 

        switch ( opcao )
        {
        case  1 :
            tipodeconta();
        case  2 :
            Relatorio();
        case  3  :
            Removerconta();
        case  4 :
            depositar();
        case  5 :
            sacar();
        case  6 :
            resumodaatividade();
        case 7:
            TrocarSenha();
        };  // switch()

 

Cuidado com isso: o switch() tem esse comportamento chamado de fall-through. Dependendo do valor da variável de controle o programa desvia para o label equivalente. E executa daí até encontrar um comando break ou até o fim do switch() todo. Label é claro o que termina por  ': ' case 7: é um label por exemplo.

 

Isso quer dizer que no seu programa vai chamar todas as funções a partir da opção, já que você não usou um break sequer. Se entrar com opcao 4 vai executar 4, 5, 6 e 7 por exemplo. Por isso duplica o menu e todo o mais que escrever...

  • Seu IDE mostra a documentação das funções? 

 

Ainda sobre o programa:
 

  • Não use acentos em seu programa. Em variáveis, em strings ou em comentários, a menos que o enunciado exija. Não vai aprender nada e só vai ter problemas
     
  • Não use system() para nada. Não estará fazendo nada. Não há nada que possa fazer com system() que não possa fazer em C ou C++. system() foi escrita em C e o sistema quase todo também. E em geral é proibido em empresas e escolas afinal: é um risco grande de segurança
     
  • evite retornar void: em geral é um desperdício. Muitas vezes um erro.
     
  • Não há razão para incluir conio.h. Essa é uma biblioteca dos anos 80 e nada acrescenta a um programa moderno. Mesmo nos anos '80 ela era usada em geral apenas para ler letrinhas do teclado sem mostrar na tela, limpar a tela e escrever letrinhas com cores --- getch(), kdhit(), clrscr() e textcolor(). A mesma coisa que estava disponível em C no Windows e no Unix depois Linux em poucas linhas. Isso em 1983. Não faça isso
     
  • Use alguma ordem em suas funções, como a ordem alfabética por exemplo. Vai gostar disso quando seu programa tiver 50 funções ao invés de umas poucas. Muitos IDE mostram uma lista das funções, em geral na ordem em que foram declaradas, de modo que você pode clicar no nome e o editor vai direto para o código. E se estiverem em ordem é claro que você só ganha.
     
  •  Nunca use variáveis globais. Isso é um pesadelo e sempre vai cair na sua cabeça. Em geral é proibido em empresas e escolas. Não declare NADA fora de main().
     
  •  Não declare mais que uma variável por linha. Não acrescenta nada e só dificulta a leitura. Inicialize todas as variáveis.
     
  • Nunca leia valores do teclado para alimentar seu programa antes dele estar rodando. Só vai te atrasar e não acrescenta absolutamente nada. Use constantes, use funções que retornam a estrutura preenchida. Ao terminar os  testes aí sim incorpore a leitura

No seu código

  • Entenda que se tem um menu não é esperto ter uma função para mostrar o menu e outra paa ler a opção: faça o óbvio e faça com que menu leai o comando e retorne. É muito mais fácil de usar e entender algo como
     
    	int menu();

     

  • você escreveu de modo a usar apenas uma conta por vez, não dez como parece que gostaria. Assim não vai funcionar. O mais simples é usar um vetor de estruturas, e cada estrutura seria uma conta, com nome, endereço, senha, CPF e tal.
  • declarou por exemplo char nome[50] e isso quer dizer que nome é um vetor de letrinhas, onde cabem até 50 delas. Só um nome. Não vai ter de um modo mágico um nome para cada conta. Não declare mais de uma variável por linha. Só atrapalha você e os outros que venham a ler seu código. É proibido em muitos lugares, empresas e escolas.
  • se não quer usar struct, que é de longe o mais simples e fácil, vai ter que declarar todas essas coisas como [10][], como por exemplo char nome[10][50]
  • entenda que se declarou
     
    char nome[50];


    quando escreve isso
     

  •    printf ( "\nNome: %s", nome [ a ] ) ;

     

nome[a] é um char. Uma única letra.

 

Sugiro arrumar essas coisas e ver o que acontece e postar um programa atualizado. 

 

 

 

 

  • Curtir 2
Postado

@arfneto @devair1010 Galera obrigado pela força, ainda estou aprendendo, o professor deu duas aulas sobre função recursiva e pediu esse exercício, agora olhando seus comentários vejo as coisas de deixei escapar, as variáveis global foi colocada dessa forma por que ele pediu em aula pra testar ele falou mesmo que não é aconselhável, a biblioteca <conio.h>  ele sempre usou assim então aprendi dessa forma irei pesquisar mais sobre. mais agradeço a força e as sugestão, faz a gente pesquisar mais. obrigado vou postar o código como ficou.

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>

//prototipação
void validarLogin();
void validarSenha();
void TrocarSenha();
void Relatorio();
void menu();
void tipodeconta();
void Removerconta();
void depositar();
void sacar();
void resumodaatividade();


//variáveis global 
int   erro=0;
int   y,m,opcao,remover,v, op1, op2,
      nc,agencia[ 50],CPF [ 50],
      telefone [ 50 ],conta [50];
char  pwd [10] , SENHA [10],
      endereco [ 50 ], CONFSENHA [10],
      nome [50];
float saldo [10000],creditar,debitar;


int main()
{
    setlocale ( LC_ALL, "português" );
    
	printf ("Digite quantas contas contas deseja criar!\n") ;
	scanf ( "%d",&nc) ;
	j:
	menu();
	scanf ( "%d" , &opcao ) ;
    do
    {
        switch ( opcao )
        {
        case  1 :
            tipodeconta();
            break;
        case  2 :
            Relatorio();
            break;
        case  3  :
            Removerconta();
            break;
        case  4 :
            depositar();
            break;
        case  5 :
            sacar();
            break;
        case  6 :
            resumodaatividade();
            break;
        case 7:
            TrocarSenha();
            break;
        case 8:
            printf("Saindo Do Programa . . . !\n\n\n\a");
            printf ("==========================================================\n"\
            "================ ....SAINDO DO SISTEMA...=================\n"\
            "==========================================================\n\n" ) ;
            continue;
            break;
        default:
            printf("opcao invalida !\n");
        }
        goto j ;
    }while( opcao != 8 );
    system("cls");
    return 256;
}// fim do programa



void menu()
{
        printf("---------------------Sejam Bem Vindos!!!!-----------------\n"
               "--------------BANCO *************************-------------\n"
               "-------------------------- MENU --------------------------\n"
               "------------------------ PRINCIPAL -----------------------\n"
               " | <1> Criar Conta|\n"
               " | <2> Consultar Conta|\n"
               " | <3> Remover Conta|\n"
               " | <4> Depósito|\n"
               " | <5> Saque|\n"
               " | <6> Resumo das atividades|\n"
               " | <7> Redefinição de senha\n"
               " | <8> Sair do Sistema|\n"
               "----------------------------------------------------------\n");
}
void tipodeconta()
{
    j:
        printf ( "Que tipo de conta você deseja Criar?\n" );
        printf ( " 1 - Conta Corrente\n 2 - Conta Poupança\n" );
        scanf ("%d" , &op1 ) ;
        system("cls");
        if ( op1 == 1 )
        {
            y ++;
            conta [ y ] = y ;
            printf ( "Crie sua CONTA CORRENTE!\n " ) ;
            printf ( "Numero da conta ->%d\n\n" , conta [ 50 ] ) ;
            conta [ y ]++;
            printf ( "Digite a agencia:\n" ) ;
            scanf ( "%d" , &agencia [ 50] ) ;
            printf ( "Digite o saldo:\n" ) ;
            scanf ( "%f" , &saldo [ 50 ] ) ;
            saldo[y]++;
            printf ( "Digite sua SENHA:\n" ) ;
            scanf ( "%s" , &SENHA [ 50 ] ) ;
            printf ( "Digite o nome:\n" ) ;
            scanf ( "%s" , &nome [ 50 ] ) ;
            printf ( "Digite o CPF:\n" ) ;
            scanf ( "%d," , &CPF [ 50 ] ) ;
            printf ( "Digite o endereço:\n " ) ;
            scanf ( "%s" , &endereco [ 50 ] ) ;
            printf ( "Digite o telefone:\n " ) ;
            scanf ( "%d", &telefone [ 50 ] ) ;
            printf ( "| **************************** |\n" ) ;
            printf ( "| CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
            printf ( "| **************************** |\n " ) ;
            printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        	m = getch() - 48;
        	if ( m == 0 )return;
        	printf("\n");
        	goto j ;
            
                        
            
        }
        else
        {
            if ( op1 == 2 )
            {
                printf ( "Crie uma CONTA POUPANÇA!\n " ) ;
                printf ( "Numero da conta ->%d\n" , conta [ 50 ] ) ;
                conta [ y ]++;
                printf ( "\nDigite a agencia:\n" ) ;
                scanf ( "%d", &agencia [ 50 ] ) ;
                printf ( "Digite o saldo:\n" ) ;
                scanf ( "%f", &saldo [ 50 ] ) ;
                saldo [y]++;
                printf ( "Digite o nome:\n" ) ;
                scanf ( "%s", &nome [ 50 ] ) ;
                printf ( "Digite sua SENHA:\n" ) ;
                scanf ( "%s" , &SENHA [ 50 ] ) ;
                printf ( "Digite o CPF:\n" ) ;
                scanf ( "%d" , &CPF [ 50 ] ) ;
                printf ( "Digite o endereço:\n" ) ;
                scanf ( "%s" , &endereco [ 50 ] ) ;
                printf ( "Digite o telefone:\n" ) ;
                scanf ( "%d" , &telefone [ 50 ] ) ;
                printf ( " | **************************** |\n" ) ;
                printf ( " | CONTA CRIADA COM SUCESSO !!!!|\n " ) ;
                printf ( "| **************************** |\n\n " ) ;
                printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        		m = getch() - 48;
        		if ( m == 0 )return;
        		printf("\n");
        		goto j ;
                
            }
        }
}
void Relatorio()
{
    int a;
    j:
        printf("INFORMAÇOES INPORTANTES DA CONTA :\n "   );
        printf("Nome ----------: %s  \n", nome     [ 50 ] );
        printf("CPF -----------: %d  \n", CPF      [ 50 ] );
        printf("ENDEREÇO ------: %s  \n", endereco [ 50 ] );
        printf("TELEFONE ------: %d  \n", telefone [ 50 ] );
        printf("SALDO R$ ------= %.2f\n", saldo    [ 50 ] );
        printf("AGENCIA -------: %d  \n", agencia  [ 50 ] );
        printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        a = getch() - 48;
        if ( a == 0 )return;
        printf("\n");
        goto j ;
}
void depositar()
{
	validarLogin();
    j:
        printf ( "Digite o número para Depósito:" ) ;
        scanf ( "%d", &op2 ) ;
        printf ( "\ncliente:%s", nome [ op2 ] ) ;
        printf ( "\nSaldo R$= %.2f", saldo [ op2 ] ) ;
        printf ( "\nInforme o valor a ser Depositado:" ) ;
        scanf ( "%f" , &creditar ) ;
        saldo [ op2 ] = saldo [ op2 ] + creditar;
        printf ( "\nValor do Depósito R$=%.2f, seu Saldo mais Depósito é de: R$=%.2f" ,creditar, saldo [ op2 ]);
        printf ("\n\n=========creditado com SUCESSO!!=========") ;
        printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        m = getch() - 48;
        if ( m == 0 )return;
        printf("\n");
        goto j ;
}
void sacar()
{
    validarLogin();
    j:
        printf( "Digite o número da conta para saque:"   ) ;
        scanf ( "%d" , &op2                              ) ;
        printf( "\nNome:%s" , nome        [ op2 ]        ) ;
        printf( "\nSaldo R$=%.2f" , saldo [ op2 ]        ) ;
        printf( "\nInforme o valor a ser Debitado:"      ) ;
        scanf ( "%f" , &debitar                          ) ;
        saldo [ op2 ] = saldo             [ op2 ] - debitar;
        if (debitar>saldo                 [ op2 ]          )
        {
            printf("\nVocê não posuui SALDO SUFICIENTE!!!");
        }
        else
        {
            printf( "\nSALDO TOTAL É DE: R$=%.2f", saldo [ op2 ] ) ;
            printf( "\nSaque realizado com SUCESSO!!\n"          ) ;
        }
        printf( "\n   Tecle zero para voltar ao Menu De opções " );
        v = getch() - 48;
        if(v == 0)return;
        goto j ;
}
void validarLogin()
{
    char y;
    char usuario[y] , nome [ y ];
    printf("\nUsuário: ");
    scanf("%s", &usuario);
    if(strcmp (usuario,nome) == 0)
        validarSenha();
    else
        validarLogin();
}
void validarSenha()
{
    int y;
    char pwd [10] , SENHA [ 10 ];
    printf("\nSenha: ");
    scanf("%s", &pwd);
    if (strcmp (pwd,SENHA)==0)
        puts("\nLogin efetuado com sucesso - Acesso LIBERADO!!!");
    else
    {
        erro++;
        if (erro==3)
            puts("\nSenha Bloqueada - Acesso NEGADO procure o administrador...");
        else
        {
            if(erro == 2)
                printf("Senha errado voce so tem mais uma chances");
            else
                printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
                validarLogin();
        }
    }
}
void resumodaatividade()
{
    j:
        printf ( "RESUMO DAS ATIVIDADES REALIZADAS\n" ) ;
        for ( op2 = 0 ; op2 < nc ; op2 ++ )
        {
            printf ( "\nCONTA:\n%d" , conta [ 50 ] ) ;
            printf ( "\nNOME: \n%s" , nome [ 50 ] ) ;
            printf ( "\nSALDO:\n%.2f" , saldo [1000000] ) ;
        }
        printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        m = getch() - 48;
        if ( m == 0 )return;
        printf("\n");
        goto j ;
}
void TrocarSenha()
{
    j:
        printf("\nDigite a Senha Atual: ");
        scanf("%s", &pwd);
        printf("\nDigite a Nova Senha: ");
        scanf("%s", &SENHA);
        printf("\nDigite a Nova Senha: ");
        scanf("%s", &CONFSENHA);
        pwd==SENHA;
        if (strcmp (CONFSENHA,SENHA)==0)
            puts("\nSenha alterada com sucesso - Acesso LIBERADO!!!\n\n");
        else
        {
            erro++;
            if (erro==3)
                puts("\nSenha ERRADA - Acesso NEGADO procure o administrador...");
            else
            {
                if(erro == 2)
                    printf("Senha errado voce so tem mais uma chances");
                else
                    printf("\n=====>Senha Errada !! Você tem mais %d chances", 3-erro);
            }
        }
        
        printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        m = getch() - 48;
        if ( m == 0 )return;
        printf("\n");
        goto j ;
        
        
        
}
void Removerconta()
{
    j:
        printf ( "*************** REMOVER CONTA *******************" ) ;
        printf ( "\n\nDigite quaquer numero para continuar ...\n\n" ) ;
        scanf ( "%d", &op2 ) ;
        system("cls");
        printf ( "Digite o número da conta\n" ) ;
        scanf ( "%d", &conta [ op2 ] ) ;
        printf ( "TEM CERTESA que desseja remover sua conta?" ) ;
        printf ( "\n\n 1-SIM 2-NAO\n\n" ) ;
        scanf ( " %d" , &remover ) ;
        if  ( remover == 1 )
        printf ( "Conta Removida com sucesso !!!\n" ) ;
        printf("\n\nTecle 0 para voltar ao Menu\n\n"           );
        m = getch() - 48;
        if ( m == 0 )return;
        printf("\n");
        goto j ;
}

 

  • Curtir 1
Postado
2 horas atrás, darcio ramires disse:

o professor deu duas aulas sobre função recursiva e pediu esse exercício, agora olhando seus comentários vejo as coisas de deixei escapar, as variáveis global foi colocada dessa forma por que ele pediu em aula pra testar ele falou mesmo que não é aconselhável, a biblioteca <conio.h>  ele sempre usou assim então aprendi dessa forma irei pesquisar mais sobre. mais agradeço a força e as sugestão, faz a gente pesquisar mais. obrigado vou postar o código como ficou

 

Você leu tudo o  que eu escrevi? Não respondeu nada. E não perguntou nada.

 

int   y,m,opcao,remover,v, op1, op2,
      nc,agencia[ 50],CPF [ 50],
      telefone [ 50 ],conta [50];
char  pwd [10] , SENHA [10],
      endereco [ 50 ], CONFSENHA [10],
      nome [50];
float saldo [10000],creditar,debitar;

 

Assim como está não vai tratar mais que uma conta.  Eu te expliquei.  E

 

  • Não mudou o menu
  • Não tem função recursiva
  • Continua usando conio.h
  • Usar variáveis globais é pior para você não melhor. 
  • O mais fácil de tudo é ler inicialmente as contas e saldos de um arquivo. É trivial.
  • Tratar as contas num vetor normal 
  • gravar em disco na saída o cadastro resultante com as contas e saldos novos para ler quando rodar o programa de novo

Veja isso:
 

void sacar()
{
    validarLogin();
    j:
        printf( "Digite o número da conta para saque:"   ) ;
        scanf ( "%d" , &op2                              ) ;
        printf( "\nNome:%s" , nome        [ op2 ]        ) ;
        printf( "\nSaldo R$=%.2f" , saldo [ op2 ]        ) ;
        printf( "\nInforme o valor a ser Debitado:"      ) ;
        scanf ( "%f" , &debitar                          ) ;
        saldo [ op2 ] = saldo             [ op2 ] - debitar;
        if (debitar>saldo                 [ op2 ]          )
        {
            printf("\nVocê não posuui SALDO SUFICIENTE!!!");
        }
        else
        {
            printf( "\nSALDO TOTAL É DE: R$=%.2f", saldo [ op2 ] ) ;
            printf( "\nSaque realizado com SUCESSO!!\n"          ) ;
        }
        printf( "\n   Tecle zero para voltar ao Menu De opções " );
        v = getch() - 48;
        if(v == 0)return;
        goto j ;
}

 

Eu te expliquei que nome[op2] é uma letra. Só uma letra. Se o cliente for Jonatas e a conta dele for 12345 seu código vai ser o que?

 

     nome[12345]


só vai cancelar seu programa porque nome é char[50]. Só tem 50 letras. 

Você não programou NADA para ler a conta associada ao Jonatas.

 

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!