Ir ao conteúdo

Posts recomendados

Postado

esse código cadastra a pessoa e faz a ligação dela como se fosse um banco porém esta dando erro pois não consigo pega a parte da strucks

<

#include<stdio.h>
#include<stdlib.h>
struct cadastro
{
    char cpf[50][50];
    char nome[50][50];
    char rg[50][50];
}pessoa;
struct banco
{
    int ndc[50];
    int saldo[50];
    int saquef[50];
    int transf[50];
    int depositof[50];
}conta;
int menu()
{
    printf("\n0. sair");
    printf("\n1. cadastrar nova conta");
    printf("\n2. depositar um valor na conta");
    printf("\n3. tranferenca de conta ");
    printf("\n4. saque valor da conta");
    printf("\n5. extrato bancario");
    printf("\n escolha sua opção:");

}
int main()
{
    int cont=1,opcao,conta,valor,ctrans,i,j;
    char x1[50] , x2[50] , x3[50] , x4[50] , x5[50] , x6[50] , x7[50] , x8[50] , x9[50], D1[50] , D2[50];
    short cpfval, CPF, cpf2;
    printf("\nqual o seu cpf: ");
    scanf("%s",pessoa.cpf[0]);
    printf("\nqual o seu nome: ");
    scanf("%s",pessoa.nome[0]);
    printf("\nqual o seu rg: ");
    scanf("%s",pessoa.rg[0]);
    CPF=pessoa.cpf[0]/100;
    x1 = CPF /100000000;
    x2 = (CPF/10000000)%10;
    x3 = (CPF/1000000)%10;
    x4 = (CPF/100000)%10;
    x5 = (CPF/10000)%10;
    x6 = (CPF/1000)%10;
    x7 = (CPF/100)%10;
    x8 = (CPF/10)%10;
    x9 = CPF%10;
    D1 = ((x1*10)+(x2*9)+(x3*8)+(x4*7)+(x5*6)+(x6*5)+(x7*4)+(x8*3)+(x9*2))%11;
    if(D1<2)
        D1 = 0;
    else
    {
        D1 = 11 - D1;
    }
        D2 = ((x1*11)+(x2*10)+(x3*9)+(x4*8)+(x5*7)+(x6*6)+(x7*5)+(x8*4)+(x9*3)+(D1*2))%11;
    if(D2<2)
    {
        D2=0;
    }
    else
    {
        D2=11 - D2;
    }
    if(D1<0||D2<0)
    {
        printf("numero invalido o programa sera encerrado!");
        exit(0);
    }
    conta.ndc[0]=rand()%5000000;
    printf("\n o numero da sua conta é: %d",conta.ndc[0]);
    system("pause");
    system("cls");
    menu();
    printf("escolha sua opção: ");
    scanf("%d",&opcao);
    do
    {

        menu();
        scanf("%d",opcao);
        switch(opcao)
        {
            case 1:
            printf("\nqual o seu cpf: ");
            scanf("%s",pessoa.cpf[cont]);
            printf("\nqual o seu nome: ");
            scanf("%s",pessoa.nome[cont]);
            printf("\nqual o seu rg: ");
            scanf("%s",pessoa.rg[cont]);
            x1 = CPF /100000000;
            x2 = (CPF/10000000)%10;
            x3 = (CPF/1000000)%10;
            x4 = (CPF/100000)%10;
            x5 = (CPF/10000)%10;
            x6 = (CPF/1000)%10;
            x7 = (CPF/100)%10;
            x8 = (CPF/10)%10;
            x9 = CPF%10;
            D1 = ((x1*10)+(x2*9)+(x3*8)+(x4*7)+(x5*6)+(x6*5)+(x7*4)+(x8*3)+(x9*2))%11;
            if(D1<2)
            {
                D1 = 0;
            }
            else
            {
                D1 = 11 - D1;
            }
            D2 = ((x1*11)+(x2*10)+(x3*9)+(x4*8)+(x5*7)+(x6*6)+(x7*5)+(x8*4)+(x9*3)+(D1*2))%11;
            if(D2<2)
            {
                D2=0;
            }
            else
            {
                D2=11 - D2;
            }
            if(D1<0||D2<0)
            {
                printf("numero invalido o programa sera encerrado!");
                exit(0);
            }
            cont++;
            break;
            case 2:
                printf("\n qual o numero da conta: ");
                scanf("%d",&conta);
                for(i=0;i<cont;i++)
                {
                    if(conta==conta.ndc)
                    {
                        printf("\nquanto deseja deposita: ");
                        scanf("%d",&valor);
                        if(valor<=conta.saldo)
                        {
                            conta.saldo+=saldo;
                            conta.depositof+=saldo;
                        }
                        break;
                    }
                }
                break;
            case 3:
                printf("\n qual o numero da conta: ");
                scanf("%d",&conta);
                for(i=0;i<cont;i++)
                {
                    if(conta==conta.ndc)
                    {
                        printf("\n qual o numero da conta que você ira transferir: ");
                        scanf("%d",&ctrans);
                        for(j=0;j<cont;j++)
                        {
                            if(ctrans==conta.ndc[j])
                            {
                                printf("\nqual o valor que deseja transferir: ");
                                scanf("%d",valor);
                                if(valor<=conta.saldo)
                                {
                                    printf("\nvalor transferido com sucesso!");
                                    conta.saldo-=valor;
                                    conta.saldo[j]+=valor;
                                    conta.transf+=valor;
                                }
                                else
                                {
                                    printf("saldo insuficiente!");
                                }
                            }
                        }
                    }
                }
                if(i==cont)
                {
                    printf("conta não cadastrada");
                }
            break;
            case 4:
                printf("\n qual o numero da conta: ");
                scanf("%d",&conta);
                for(i=0;i<cont;i++)
                {
                    if(conta==conta.ndc)
                    {
                        printf("\ndigite o valor da retirada: ");
                        scanf("%d",&valor);
                        if(valor==conta.saldo)
                        {
                            Printf("\nsaque realizado com sucesso!");
                            conta.saldo-=valor;
                            conta.saquef+=valor;
                        }
                        else
                        {
                            printf("valor insuficiente!");
                        }
                    }
                }
                if(i==cont)
                {
                    printf("conta não cadastrada");
                }
            break;
            case 5:
                printf("\n qual o numero da conta: ");
                scanf("%d",&conta);
                for(i=0;i<cont;i++)
                {
                    if(conta==conta.ndc)
                    {
                        printf("\nsaques: %d",conta.saquesf);
                        printf("\ntransferencias: %d",conta.trnsf);
                        printf("\ndepositos: %d",conta.depositof);
                    }
                }
                if(i==cont)
                {
                    printf("conta não cadastrada");
                }
            system("pause");
            system("cls");
            menu();
            printf("escolha sua opção: ");
            scanf("%d",&opcao);
        }
    }while(opcao==0);
}
>

  • Obrigado 1
Postado

@João Vitor Sacramento Rocha     esse  <>  não é o sinal menor que e maior que não ,  ele é hum botão que está desenhado lá na barra de ferramentas da janela de postar  ,   não usando ele seu código ficará faltando alguns caracteres  ,  e seu código está bom  ,  mas em qual parte você está se referindo que não consegue pegar ?  pelo que pude ver um erro é por que você está tentando dividir um char por hum  inteiro na linha 38 ,  não se pode fazer operações aritméticas com tipos char ,  precisa converter para int ou long ou double ou float usando o comando  atoi  " array para inteiro ,  e essa parte do seu código poderia ser assim  :

int main()
{
    int cont=1,opcao,conta,valor,ctrans,i,j;
    char x1[50],x2[50],x3[50],x4[50],x5[50],x6[50],x7[50],x8[50],x9[50],D1[50],D2[50];
    short cpfval, CPF, cpf2;
    printf("\nqual o seu cpf: ");
    scanf("%s",pessoa.cpf[0]);
    printf("\nqual o seu nome: ");
    scanf("%s",pessoa.nome[0]);
    printf("\nqual o seu rg: ");
    scanf("%s",pessoa.rg[0]);
    CPF=(int)pessoa.cpf[0]/100;
    strcpy(x1,(char)CPF /100000000);
    strcpy(x2,(char)(CPF/10000000)%10);
    strcpy(x3,(char)(CPF/1000000)%10);
    strcpy(x4,(char)(CPF/100000)%10);
    strcpy(x5,(char)(CPF/10000)%10);
    strcpy(x6,(char)(CPF/1000)%10);
    strcpy(x7,(char)(CPF/100)%10);
    strcpy(x8,(char)(CPF/10)%10);
    strcpy(x9,(char)CPF%10);
    strcpy(D1,((atoi(x1)*10)+(atoi(x2)*9)+(atoi(x3)*8)+(atoi(x4)*7)+
               (atoi(x5)* 6)+(atoi(x6)*5)+(atoi(x7)*4)+(atoi(x8)*3)+
               (atoi(x9)* 2))%11);
    if(atoi(D1)<2)
        strcpy(D1,"0");
    else
    {
        strcpy(D1,(char)(11 - stoi(D1)));/* fazer como na linha de cima e os outros também */
    }
        D2 = ((x1*11)+(x2*10)+(x3*9)+(x4*8)+(x5*7)+(x6*6)+(x7*5)+(x8*4)+(x9*3)+(D1*2))%11;
    if(D2<2)
    {
        D2=0;
    }
    else

 

  • Amei 1
Postado

pessoa.cpf[ i ] é um vetor de caracteres armazenando uma string de dígitos, é preciso transformar a string de dígitos em um número inteiro antes de realizar cálculos com o número inteiro, para isso use a função atoi() da biblioteca stdlib.h que serve exatamente para fazer isso.

 

https://en.cppreference.com/w/c/string/byte/atoi

 

 

Leia minha assinatura abaixo para ver como postar código no fórum sem que o fórum faça alterações no seu código, como aconteceu no seu código onde todos os [ i ] sem espaços sumiram.

  • Curtir 1

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...

GRÁTIS: Aprenda a Ler Resistores e Capacitores

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!