Ir para o conteúdo
duarteol2000

Relação de structs

Mensagens Recomendadas

duarteol2000

Olá amigos, bom sou acadêmico e estou com um exercício que não consigo resolver, gostaria muito da ajuda dos amigos. O meu problema é o seguinte tenho que criar uma strutura cliente com os seguintes parametros: nome, cpf, data de nascimento, outra estrutura chamada conta com os seguintes parametros: agencia, conta e saldo, até ai tudo bem, eu só não sei relacionar o cliente a uma determinada conta, os amigos poderiam ajudar? obrigado a todos pela atenção!!!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

primeiro tens de pensar de uma forma não programática.

qual é na realidade a relação entre cliente e a agência ?

quantas agências se podem relacionar a um/cada cliente ?

quantos clientes se podem relacionar a uma/cada agência ?

só depois de responderes a este tipo de perguntas podes pensar em como criar a relação programáticamente


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

ok então la vai:

Desenvolva uma aplicação em C que simule um controle bancário. Para tanto,

crie o tipo Cliente que tem como atributos nome, cpf e data de nascimento; e o

tipo Conta que tem como atributos o número, a agência, o saldo e o cliente

(atributo do tipo Cliente). Os atributos número e agência devem ser do tipo

Cadeia de Caracteres. Em seguida, solicite ao usuário os números, agências,

saldos e clientes (nome, cpf e data de nascimento) de 10 contas, cadastrandoas

em um vetor de Contas. A aplicação não deve permitir o cadastro de mais

de uma conta com o mesmo número e agência. No caso, o programa deve

apresentar a mensagem de erro “Conta já cadastrada!Tente novamente!”

Depois da leitura de todas as contas, o seu programa deve disponibilizar ao

usuário um menu com as seguintes opções:

1) Efetuar depósito

2) Efetuar saque

3) Consultar o ativo bancário (ou seja, o somatório dos saldos de todos os clientes)

4) Exibir relatório de contas

5) Finalizar programa

Veja os detalhes de cada uma das funcionalidades abaixo:

1) Efetuar depósito: Para efetuar o depósito, o programa deve solicitar ao

usuário o código e a agência da conta, assim como o valor a ser depositado. Se

o valor a ser depositado informado for negativo, o programa deve apresentar a

mensagem de erro “Valor de depósito inválido!Deve ser positivo!” e o valor

deverá ser informado novamente até que o usuário informe um valor de

depósito positivo. Se a conta (agência e número) não estiver cadastrada no

vetor de contas, o programa deve apresentar a mensagem “Conta não

encontrada” e voltar ao menu. Se a conta existir, o saldo da mesma deve ser

atualizado com a realização do depósito.

2) Efetuar saque: Para efetuar saque, o programa deve solicitar ao usuário o

número e agência da conta, assim como o valor a ser sacado. Se o valor a ser

sacado for negativo, deverá ser apresentada a mensagem “Valor de saque

inválido!Deve ser positivo” e o valor deverá ser informado novamente até que o

usuário informe um valor de saque positivo. Se a conta não estiver cadastrada,

o programa deve apresentar a mensagem “Conta não encontrada” e voltar ao

menu. Se a conta existir, deve ser verificado se seu saldo é suficiente para

cobrir o saque (Suponha que a conta não pode ficar com saldo negativo). Se o

saldo for suficiente, o programa deve realizar o saque e voltar ao menu. Caso

contrário, o programa deve mostrar a mensagem “Saldo insuficiente para

saque” e voltar ao menu.

3) Consultar ativo bancário: Para consultar o ativo bancário, deve-se somar o

saldo de todas as contas do banco. O programa deve mostrar esse valor na tela

e voltar ao menu de opções.

4) Exibir relatório de contas: Para exibir relatório de contas, o programa deve

mostrar na tela o número, agência, saldo e cliente (nome, cpf e data de

nascimento) de todas as contas cadastradas no vetor de Contas.

5) O programa só termina quando for digitada a opção 5 – Finalizar programa

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg
eu só não sei relacionar o cliente a uma determinada conta

Lê o enunciado com atenção:

crie o tipo Cliente que tem como atributos nome, cpf e data de nascimento; e o

tipo Conta que tem como atributos o número, a agência, o saldo e o cliente

(atributo do tipo Cliente)

A relação entre Cliente e Conta está bem explícita: cada cliente pertence a uma conta.

De acordo com a minha interpretação do enunciado não podes ter clientes com 2 ou mais contas.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

olá moderador eu só não sei fazer essa relação e de acordo com a sua interpretação você está correto.

eu tentei fazer da seguinte forma:

struct cliente{
        char nome[100];
        char cpf[14];
        char datanasc[10];
} cliente;
struct conta{
       char agencia[6];
       char conta[8];
       float saldo;
       cliente Cliente;
}

quando faço a solicitação do nome da erro de union, daí parei não consegui desenrolar

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
struct cliente{
                char nome[100];
                char cpf[14];
                char datanasc[10];
} cliente;  // <--- presumo que querias criar o tipo de dados "cliente"
           //      no entanto falta a palavra reservada "typedef" no início da definição da estrutura

struct conta{
           char agencia[6];
           char conta[8];
           float saldo;
           cliente Cliente; // <-- como te disse acima, o tipo de dados cliente não está definido
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
AJBM

Boas!

So um pequena obs o tipo de dados cliente põe antes Cliente, quando criares um novo tipo de dado coloca a primeira letra como maiúscula.

Podes mostrar o erro que te da?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Em C, ao criares um novo tipo de dados com struct qualquercoisa ... o nome que identifica esse tipo de dados é struct qualquercoisa. O identificador mais simples qualquercoisa não existe (como dito atrás podes também criar esse identificador e associá-lo à struct qualquercoisa).

struct cliente { /* whatever */ };
struct conta {
   /* ... */
   struct cliente cliente;
};

No código acima, a estrutura struct conta tem um mebro de tipo struct cliente cujo identificador é cliente.


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

meu código até o momento está da seguinte forma:

#include<string.h>
#include<stdio.h>
struct cliente{
                char nome[100];
                char cpf[14];
                char datanasc[10];
} typedef cliente;  // <--- presumo que querias criar o tipo de dados "cliente"
           //      no entanto falta a palavra reservada "typedef" no início da definição da estrutura
struct conta{
           char agencia[6];
           char conta[8];
           float saldo;
           struct cliente cliente; // <-- como te disse acima, o tipo de dados cliente não está definido
}typedef conta;
int main(){
   int i;
   for(i=0; i<10; i++){
       printf("Por favor digite o nome: ");
       gets(cliente.nome);
       printf("Numero da Agencia: ");
       gets(conta.agencia);
   }
}

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

... no entanto falta a palavra reservada "typedef" no INÍCIO da definição da estrutura

// typedef <definição> <nome_do_tipo>
typedef struct // a estrutura pode ou não ter nome
{
 // definições
} XPTO; // nome do tipo : XPTO


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

agora está assim:

#include<string.h>
#include<stdio.h>
typedef struct cliente{
                char nome[100];
                char cpf[14];
                char datanasc[10];
} cliente;  // <--- presumo que querias criar o tipo de dados "cliente"
           //      no entanto falta a palavra reservada "typedef" no início da definição da estrutura
typedef struct conta{
           char agencia[6];
           char conta[8];
           float saldo;
           struct cliente cliente; // <-- como te disse acima, o tipo de dados cliente não está definido
} conta;
int main(){
   int i;
   for(i=0; i<10; i++){
       printf("Por favor digite o nome: ");
       gets(cliente[i].nome);
       printf("Numero da Agencia: ");
       gets(conta[i].agencia);
   }
}

vc. não poderia me fazer um exemplo?

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

Hint: nao uses float para dinheiro!

Eis a razão:

#include <stdio.h>

int main(void) {
 float naonaonao = 0.01;
 double simsim = 0.01;
 int k;

 printf("iteracao #%d: float tem %f; double tem %f\n",
       0, naonaonao, simsim);
 for (k = 1; k < 17; k++) {
   naonaonao *= 10; naonaonao += 0.01;
   simsim *= 10; simsim += 0.01;
   printf("iteracao #%d: float tem %f; double tem %f\n",
         k, naonaonao, simsim);
 }

 return 0;
}


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

#include<string.h>
#include<stdio.h>

typedef struct cliente
{
 char nome[100];
 char cpf[14];
 char datanasc[10];
} Cliente;

typedef struct Conta
{
 char agencia[6];
 char conta[8];
 double saldo;
 Cliente cliente; // agora podes usar somente o nome do tipo 
} Conta;

int main(){
   int i;
   for(i=0; i<10; i++){
       printf("Por favor digite o nome: ");
       gets(cliente[i].nome); // <--------- não tens a variável "cliente" declarada em lado nenhum
       printf("Numero da Agencia: ");
       gets(conta[i].agencia);// <--------- não tens a variável "conta" declarada em lado nenhum
   }
}

ps : não digas que foi por ter alterado os nomes dos tipos para ter a primeira letra como maiúscula, porque o fiz para ver se percebes qual é a diferença entre Tipo de Dados e os Dados em si


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

bom amigo agora eu modifiquei, até rodou mas ele diz pra fechar o programa

#include<string.h>
#include<stdio.h>
typedef struct cliente
{
char nome[100];
char cpf[14];
char datanasc[10];
};
typedef struct Conta
{
struct cliente Cliente;
char agencia[6];
char conta[8];
double saldo;
} Conta;
int main(){
struct cliente *Cliente;
int i;
for(i=0; i<10; i++){
    printf("Por favor digite o nome: ");
    scanf("%c",Cliente[i].nome);
}
}

Editado por pmg
Falta LP no GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

apresentas falta de conhecimentos básicos de programação que já deverias ter antes de te meter a realizar este tipo de coisas

só existe uma solução para este tipo de situação : tutoriais

necessitas de saber o que é e como manusear uma estrutura:

1º resultado do google : http://www.codingunit.com/c-tutorial-structures-unions-typedef

também parece que queres mexer em listas :

http://www.codingunit.com/c-tutorial-arrays-and-multi-dimensional-arrays


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
duarteol2000

de fato conheço pouquíssimo linguagem c, tive muita dificuldade de estar presente nas aulas, por problemas particulares que não vem ao caso, porém tenho um um bom conhecimento em programação, más em específico na linguagem c, me falta e tenho que fazer este trabalho que nos foi dado na faculdade e se é impossível vc. mostrar um exemplo, sem problema, eu teria como identificar melhor suas considerações, obrigado assim mesmo pela sua tentativa em me ajudar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pmg

A minha ideia é que o typedef, para struct simples, atrapalha mais do que simplifica.

Tenta fazer o teu programa sem usar essa palavra chave.

Editado por pmg

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
#include<string.h>
#include<stdio.h>

struct Cliente
{
 char nome[100];
 char cpf[14];
 char datanasc[10];
};

struct Conta
{
 char agencia[6];
 char conta[8];
 double saldo;
 struct Cliente cliente;
};

int main(){
 struct Cliente um_cliente;
 struct Cliente lista_3_clientes[3];

 // só agora é que podes usar as variáveis "um_cliente" e "lista_3_clientes"
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.