Sei sulla pagina 1di 3

EXERCCIOS DE REGISTROS - RESOLUO

Programa Clientes_Bancos;

1) Um banco est informatizando seu controle de clientes e contas. Num primeiro


momento o banco deseja guardar informaes de no mximo 1000 clientes. Cada cliente
tem os seguintes dados: Nmero do Cliente, Nome, Idade, Endereo, Quantidade de
Contas Correntes. Cada cliente tem no mximo 5 contas correntes. As informaes de
conta corrente so as seguintes: Nmero do cliente, Tempo em que cliente(em anos),
Saldo e Nmero da Conta.
Sair da leitura dos cadastros acima quando for informado 1 no Nmero do Cliente.
a)
b)
c)
d)

Definir as estruturas e variveis necessrias para resolver o problema;


Ordenar as informaes dos Clientes e de Contas Correntes por Nmero do Cliente.
Imprimir os dados dos clientes e das contas para as contas com mais de 10 anos;
Imprimir os dados dos clientes que tm menos de 30 anos de idade;

2) Uma biblioteca possui obras de cincias exatas, humanas e biomdicas, totalizando no


mximo 3000 obras. As informaes de cada obra so: Cdigo de Catalogao, Nome,
Autor, Editora, Assunto e Ano de Edio;
a) Ordenar os registros por assunto e imprimir quantas obras existem de cada assunto;
b) Dado um Cdigo de Catalogao(informado pelo usurio) imprimir os dados da obra,
caso exista. Sair da pesquisa quando for informado 1 no Cdigo de Catalogao.

Tipos
{Definio Estrutura do registro de Clientes}
Reg_banco = Registro
Inteiro :Num_cliente;
Caracter: Nome;
Inteiro: Idade;
Caracter: Endereo;
Inteiro: Qt_contas;
Fim-registro;
{Definio Estrutura do registro das Contas Correntes}
Reg_Conta = Registro
Inteiro: Num_cliente;
Tempo: Inteiro;
Saldo: Real;
Fim-registro;
{Definio Vetor de Registros}
Vetor1 = Vetor[1:1000]
Reg_banco;
Vetor2 = Vetor[1:5000]
Reg_conta;
Variveis

{Definio das variveis}

Vetor1 : Vet_banco;
Vetor2 : Vet_conta;
Inteiro: I, J, Cont_ban, Cont_con;
Reg_banco: Aux_banco;
Reg_conta: Aux_conta;
Incio
Cont_ban 1;
Cont_con 1;

{Incio do programa principal}


{Inicializao de variveis}

{Leitura dos registros de Clientes}


Imprima("Entre os dados de Clientes:");
Leia(Vet_banco[Cont_ban]);
{Verifica se termina a leitura com 1000 registros ou com Nmero do Cliente = -1}
Enquanto Cont_ban < 1000 e Vet_banco[Cont_ban].Num_cliente <> -1 faa
Cont_ban Cont_ban + 1;
Imprima("Entre os dados de Clientes:);
Leia (Vet_banco[Cont_ban]);
Fim-enquanto;
{Leitura dos registros dos registros de Contas Correntes}
Imprima("Entre os dados das contas Correntes:");
Leia(Vet_conta[Cont_con]);
{Verifica se termina a leitura com 5000 registros ou com Nmero do cliente = -1}

Enquanto Cont_com < 5000 e Vet_conta[Cont_con].Num_cliente <> -1 faa


Imprima("Entre os dados das contas Correntes:");

Cont_con Cont_con+ 1;
Leia(Vet_conta[Cont_con].);
Fim-enquanto;
Se Vet_banco[Cont_ban].Num_cliente = - 1 ento {Retira o ndice do vetor com contedo
-1}
Cont_ban Cont_ban 1;
Fim-se;
Se Vet_conta[Cont_con].Num_cliente = -1 ento
Cont_con Cont_con 1;
Fim-se;

Se Vet_banco[I].Idade < 30 ento


Imprima(Vet_banco[I].Num_cliente,
,Vet_banco[I].Nome,
Vet_banco[I].Idade,
, Vet_banco[I].Endereo,
,
Vet_banco[I].Qt_contas);
Fim_se;
Fim_para;
Fim_para;
Fim. {Fim do programa}

{Ordenao dos dados dos clientes}


Para I de 1 at (Cont_ban - 1) faa
Para J de (I+1) at Cont_ban faa
Se (Vet_banco[I].Num_cliente > Vet_banco[J].Num_cliente) ento
Aux_banco Vet_banco[I];
Vet_banco[I] Vet_banco[J];
Vet_banco[J] Aux_banco;
Fim-se;
Fim-Para;
Fim-Para;
{Ordenao dos dados das contas correntes}
Para I de 1 at (Cont_con - 1) faa
Para J de (I+1) at Cont_con faa
Se (Vet_conta[I].Num_cliente > Vet_conta[J].Num_cliente) ento
Aux_conta Vet_conta[I];
Vet_conta[I] Vet_conta[J];
Vet_conta[J] Aux_conta;
Fim-se;
Fim-Para;
Fim-Para;

Programa Biblioteca;

{Impresso do cabealho do primeiro relatrio}


Imprima(Dados de Clientes com mais de 10 anos);
Imprima(N Cliente Nome Idade
Endereo
Qt Contas
Saldo Tempo );
Para I de 1 at Cont_ban faa {Impresso dos dados dos clientes com mais de 10 anos}
Para J de 1 at Cont_con faa
Se Vet_banco[I].Num_cliente = Vet_conta[J].Num_cliente ento
Imprima(Vet_banco[I].Num_cliente,
,Vet_banco[I].Nome, ,
Vet_banco[I].Idade,
, Vet_banco[I].Endereo,
,
Vet_banco[I].Qt_contas,
, Vet_conta[J].Saldo, Vet_conta[J].Tempo);
Fim_se;
Fim_para;
Fim_para;

Incio
Cont_livro 1;
Cont_CE 0;
Cont_Hum 0;
Cont_Bio 0;

{Impresso do cabealho do segundo relatrio}


Imprima(N Cliente Nome Idade
Endereo

Tipos
{Definio Estrutura do registro de livros}
Reg_livro = Registro
Inteiro :Cod_livro;
Caracter: Titulo, Autor, Editora;
Inteiro: Assunto; {1 Cincias Exatas, 2 Humanas, 3 - Biomdicas}
Inteiro: AnoEdic;
Fim-registro;

{Definio Vetor de Registros}


Vetor1 = Vetor[1:3000]
Reg_livro;
Variveis

{Definio das variveis}

Vetor1 : Vet_livro;
Inteiro: I, J, Cont_livro, Cont_CE, Cont_Hum, Cont_Bio,CodCat;
Reg_livro: Aux_livro;
Lgico: Achou;
{Incio do programa principal}
{Inicializao de variveis}

Imprima("Entre os dados de Livros:");


Leia(Vet_livro[Cont_livro]);
{Verifica se termina a leitura com 100 registros ou com Cdigo de Catalogao = -1}
Enquanto Cont_livro < 1000 e Vet_livro[Cont_livro].Cod_livro <> -1 faa
Cont_livro Cont_livro + 1;
Imprima("Entre os dados de Livros:);
Leia (Vet_livro[Cont_livro]);
Fim-enquanto;

Qt Contas);

Se Vet_livro[Cont_livro].Cod_livro = - 1 ento
Cont_livro Cont_livro 1;
Fim-se;

{Impresso dos dados do segundo relatrio - clientes com menos de 30 anos de idade }
Para I de 1 at Cont_ban faa

{Ordenao dos dados dos livros por cdigo do assunto}


Para I de 1 at (Cont_livro - 1) faa
Para J de (I+1) at Cont_livro faa
Se (Vet_livro[I].Cod_livro > Vet_livro[J].Cod_livro) ento
Aux_livro Vet_livro[I];
Vet_livro[I] Vet_livro[J];
Vet_livro[J] Aux_livro;
Fim-se;
Fim-Para;
Fim-Para;
{Conta a quantidade de livros por assunto}
Para I de 1 at Cont_livro faa
Se Vet_livro[I].Assunto = 1 ento
Cont_CE Cont_CE + 1;
seno
Se Vet_livro[I].Assunto = 2 ento
Cont_Hum Cont_Hum + 1;
seno
Cont_Bio Cont_Bio + 1;
Fim_se;
Fim_se;
Fim_para;
Imprima(Informe um cdigo de Catalogao:);
Leia(CodCat);
Enquanto CodCat <> -1 faa
I 1;
Enquanto (I <= 3000) e (CodCat <> Vet_livro[I].Cod_livro) faa
I I + 1;
Fim_enquanto;
Se (I <= 3000) ento {Encontrou o Cdigo na posio I}
Imprima(Vet_livro[I].Cod_livro, ,Vet_livro[I].Titulo, , Vet_livro[I].Autor,
,Vet_livro[I].Editora, ,Vet_livro[I].Assunto, ,Vet_livro[I].AnoEdic);
seno {A varivel I ultrapassou o valor de 3000 ou seja, no encontrou}
Imprima(O livro com Cdigo de Catalogao:, CodCat, no foi encontrado);
fim-se;
Imprima(Informe um cdigo de Catalogao:);
Leia(CodCat);
Fim_enquanto;
Fim. {Fim do programa principal}

Potrebbero piacerti anche