Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Programação impossível para 3 dias !!!


Posts recomendados

Olá, me chamo João e possuo uma matéria de programação em Pascal e o professor quer que fazemos um programa que acho praticamente impossível em apenas 3 dias vim aqui tentar conseguir alguma ajuda.

 

Faça um programa que funcione como um cadastro de clientes utilizando vetores.

As informações a ser cadastradas são: nome, idade, peso, altura, sexo e profissão e CPF.

 O programa deve ter um menu com as seguintes opções:

1 – Cadastrar cliente

2 – Consultar cliente por nome

3 – Consultar cliente por CPF

4 – Editar informações do cliente (consultar por nome)

5 – Mostrar todos os clientes

6 – Mostrar todas as mulheres

7 – Mostrar todos os homens

8 – Calcular média de: idade, peso, altura

9 – Calcular média de: idade, peso, altura dos homens

10 – Calcular média de: idade, peso, altura das mulheres

11 - SAIR 

obs : gosto muito de programar em pascal mas trocou de professor e ele quer que a gente faça isso .

 

 

 

o código que fiz até o momento :  

não consigo ir mais alem que isso 

Program cadastro ; 
var v:array [1..100] of real; 
 nome,sx,prof:char;
 idade,x:real;
 peso,alt,cpf,N,i:integer;
    
Begin
for i :=1 to N do;
Begin
writeln('Quantos cadastros serão feitos');
readln (N);
 writeln('1  Cadastrar cliente');
 writeln('2  Consultar cliente por nome ');
 writeln('3  Consultar cliente por CPF');
 writeln('4  Editar informações do cliente (consultar por nome) ');
 writeln('5  Mostrar todos os clientes ');
 writeln('6  Mostrar todas as mulheres ');
 writeln('7  Mostrar todos os homens ');
 writeln('8  Calcular média de: idade, peso, altura ');
 writeln('9  Calcular média de: idade, peso, altura dos homens ');
 writeln('10  Calcular média de: idade, peso, altura das mulheres ');
 writeln('11  SAIR'); 
 readln(x);
 
 if(x=1) then begin
 writeln('digite o nome');
 readln(nome);
 writeln('digite a idade');
 readln(idade);
 writeln('digite o peso');
 readln(peso);
 writeln('digite a altura');
 readln(alt);
 writeln('digite o sexo');
 readln(sx);
 writeln('digite a profissao');
 readln(prof);
 writeln('digite o cpf');
 readln(cpf);
 readln (v);

 if(x=2)then begin
  writeln('digite o nome');
 End;
 end

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

23 horas atrás, Joao didy disse:

Ola me chamo joão e possuo uma matéria de programação em pascal   e o professor quer que fazemos um programa que acho praticamente impossível em apenas 3 dias vim aqui tentar conseguir alguma ajuda.

sim é possível, mas depende do tanto que você já sabe programar.

 

Não sei se isso ajuda ou atrapalha, mas aqui vai um código de exemplo (nada muito sofisticado).

program CadastroClientes;
uses
  Crt,SysUtils;
  
const
  T_NOME=15;
  T_CPF=12;
  MAX_CLIENTES=100;
  
  
type
  TClente=record
    nome:string[T_NOME];
    idade:byte;
    peso:real;
    altura:real;
    sexo:char;
    cpf:string[T_CPF];
    profissao:string;
  end;
  
var
  clientes:array[0..MAX_CLIENTES] of TClente;
  q_clientes:SmallInt=0;
  opcao,d,l:byte;
  
function Menu:byte;
var
  valor:byte;
begin
  repeat
    writeln('1:Cadastra Clientes');
    writeln('2:Consulta Clientes Por Nome');
    writeln('3:Consulta Clientes Por CPF');
    writeln('4:Edita informações Do Cliente (Consulta por nome)');
    writeln('5:Mostra Todos Os Cliente');
    writeln('6:Mostra Todos Os Cliente Mulheres');
    writeln('7:Mostra Todos Os Cliente Homens');
    writeln('8:Calcula Media de: Idade, Peso, Altura');
    writeln('9:Calcula Media de: Idade, Peso, Altura Dos Homens');
    writeln('10:Calcula Media de: Idade, Peso, Altura Das Mulheres');
    writeln('11:Sair');
    writeln(':>');
    readln(valor);
    if (valor<1) or (valor>11) then
    begin
      writeln('Opcao Invalida.');
      writeln('Pressione enter para continuar.');
      readln;
    end;
  until (valor>=1) and (valor<=11);
  Menu:=valor;
end;

begin
  repeat
    opcao:=Menu;
    case opcao of
      1:begin
        writeln('Digite o nome do cliente');
        readln(clientes[q_clientes].nome);
        writeln('Digite a idade do cliente');
        readln(clientes[q_clientes].idade);
        writeln('Digite o peso do cliente');
        readln(clientes[q_clientes].peso);
        writeln('Digite a altura do cliente');
        readln(clientes[q_clientes].altura);
        writeln('Digite o sexo do cliente');
        readln(clientes[q_clientes].sexo);
        writeln('Digite a profissao do cliente (Resumidadmente, menos de 256 caracteres)');
        readln(clientes[q_clientes].profissao);
        writeln('Digite o CPF do cliente');
        readln(clientes[q_clientes].cpf);
        inc(q_clientes);    { Soma mais um a variavel }
      end;
      5:begin
        writeln('1:Mostrar todos os clientes de uma vez');
        writeln('2:Mostrar clientes dez de cada vez');
        readln(opcao);
        if q_clientes>=1 then
          if opcao=1 then
            for l:=0 to q_clientes-1 do
              with clientes[l] do
              begin
                writeln('Nome:',nome);
                writeln('Idade:',idade);
                writeln('Peso:',peso);
                writeln('Altura:',altura);
                writeln('Sexo:',sexo);
                writeln('profissao:',profissao);
                writeln('CPF:',cpf);
              end
          else
          begin
            d:=1;
            for l:=0 to q_clientes-1 do
            begin
              with clientes[l] do
              begin
                writeln('Nome:',nome);
                writeln('Idade:',idade);
                writeln('Peso:',peso:2:2);
                writeln('Altura:',altura:2:2);
                writeln('Sexo:',sexo);
                writeln('profissao:',profissao);
                writeln('CPF:',cpf);
              end;
              if d>=10 then
              begin
                writeln('Pressione enter para continuar');
                readln;
                d:=0;
              end;
              inc(d);
            end;
          end
        else
          writeln('Nao ha clientes cadastrados ainda.');
        writeln('Pressione enter para continuar');
        readln;
      end;
    end;
  until opcao=11;
end.

Foi mal a escassez de comentários.

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...
  • Membro VIP

@Joao didy, sei que já passou os 3 dias, mas se quiser dar continuidade...

 

Segue alguns pontos:

 

Em 21/01/2020 às 21:38, Joao didy disse:

Faça um programa que funcione como um cadastro de clientes utilizando vetores.

Aqui está o cerne da definição do algoritmo. Como ele fala do cadastro de clientes, todos os dados do cliente precisam ser armazenados. Uma forma intuitiva seria criar um vetor para cada "atributo" do cliente, ou seja: cada "dado" do cliente ficaria armazenado num vetor diferente, e seriam associados a uma mesma posição... Ex:

program Cadastro_de_clientes;
(*
1   Cadastrar cliente
2   Consultar cliente por nome
3   Consultar cliente por CPF
4   Editar informações do cliente (consultar por nome)
5   Mostrar todos os clientes
6   Mostrar todas as mulheres
7   Mostrar todos os homens
8   Calcular média de: idade, peso, altura
9   Calcular média de: idade, peso, altura dos homens
10  Calcular média de: idade, peso, altura das mulheres
11 - SAIR
*)
uses
  CRT;
var
  vetNome   :array [1..5] of string;
  vetCPF    :array [1..5] of string;
  vetSexo   :array [1..5] of string;
  vetIdade  :array [1..5] of integer;
  vetPeso   :array [1..5] of real;
  vetAltura :array [1..5] of real;
  
  opcao :string[2];
  totalRegistros :integer;
  
BEGIN
opcao := '0';
totalRegistros := 0;
while (opcao <> '11') do
  begin
  ClrScr;
  writeln('');
  writeln(' *** MENU ***');
  writeln('');
  writeln(' 1  Cadastrar cliente                                  ');
  writeln(' 2  Consultar cliente por nome                         ');
  writeln(' 3  Consultar cliente por CPF                          ');
  writeln(' 4  Editar informações do cliente (consultar por nome) ');
  writeln(' 5  Mostrar todos os clientes                          ');
  writeln(' 6  Mostrar todas as mulheres                          ');
  writeln(' 7  Mostrar todos os homens                            ');
  writeln(' 8  Calcular média de: idade, peso, altura             ');
  writeln(' 9  Calcular média de: idade, peso, altura dos homens  ');
  writeln(' 10 Calcular média de: idade, peso, altura das mulheres');
  writeln(' 11 SAIR                                               ');
  writeln('');
  write  (' => ');
  readln(opcao);
  
  case opcao of
    '1'  :begin
          totalRegistros := totalRegistros + 1;
          writeln('');
          writeln(' *** CADASTRO DE CLIENTES ***');
          writeln('');
          write  ('Nome : '); readln(vetNome[totalRegistros]);
          write  ('CPF  : '); readln(vetCPF[totalRegistros]);
          //...
          end;
    '2'  :begin
          
          end;
    end; //fim case
  end;
END.

 

Uma boa forma de testar é colocar para exibir os dados cadastrados, ex.:

  case opcao of
    '1'  :begin
          totalRegistros := totalRegistros + 1;
          writeln('');
          writeln(' *** CADASTRO DE CLIENTES ***');
          writeln('');
          write  ('Nome : '); readln(vetNome[totalRegistros]);
          write  ('CPF  : '); readln(vetCPF[totalRegistros]);
          //...
          end;
    '2'  :begin
          
          end;
          
    '00' :begin
          for i:=1 to totalRegistros do
            begin
            writeln('Nome : ', vetNome[i]);
            writeln('CPF  : ', vetCPF[i]);
            //...
            readln();
            end;
          end;
    end; //fim case

 

tela pascal.png

 

Aí já demonstro dicas bacanas: não tente implementar tudo de uma vez.. nem muito menos precisar colocar dados "precisos" para testar.

 

Outra forma mais elegante e funcional é utilizando registros. Ex.:

var
  registrosCliente :array [1..5] of record
                                      nome   :string;
                                      CPF    :string;
                                      sexo   :char;
                                      idade  :byte;
                                      peso   :byte;
                                      altura :real;
                                    end;
  
  totalRegistros :integer;
  opcao :string[2];
  i :integer;
  case opcao of
    '1'  :begin
          totalRegistros := totalRegistros + 1;
          writeln('');
          writeln(' *** CADASTRO DE CLIENTES ***');
          writeln('');
          write  ('Nome : '); readln(registrosCliente[totalRegistros].nome);
          write  ('CPF  : '); readln(registrosCliente[totalRegistros].CPF);
          //...
          end;
    '2'  :begin
          
          end;
          
    '00' :begin
          for i:=1 to totalRegistros do
            begin
            writeln('Nome : ', registrosCliente[i].nome);
            writeln('CPF  : ', registrosCliente[i].CPF);
            //...
            readln();
            end;
          end;
    end; //fim case

 

O resultado será exatamente o mesmo do uso de "várias vetores", mas terá a vantagem de "agrupar" tudo num vetor só (no caso fiz um "vetor de registros". Com registros, daria para fazer por exemplo isso:

registrosCliente[1] := registrosCliente[3];

Ou seja: todos os "atributos" de um registro serão copiados para o outro. Com vetores, teria que fazer um a um.

 

Vai ficar mais fácil quando for usar funções e procedimentos, onde pode passar todos os dados do cliente de uma vez só, já que está em "registro". O mesmo se for passar todos, no caso passaria o vetor de registro... tudo em uma variável só, em vez de um para cada atributo...

 

Vai facilitar também caso queira utilizar arquivos binários que conseguirão salvar "registros completos" de uma só vez" (em vez do tal citado "um cada atributo")... por aí vai...(* dá para usar com arquivos de textos também, que podem ser editados por qualquer editor de texto).

 

Uma base seria esta. Basta colocar os outros atributos e fazendo um a um as opções do menu.

 

Segue código de referência:

program Cadastro_de_clientes;
(*
1   Cadastrar cliente
2   Consultar cliente por nome
3   Consultar cliente por CPF
4   Editar informações do cliente (consultar por nome)
5   Mostrar todos os clientes
6   Mostrar todas as mulheres
7   Mostrar todos os homens
8   Calcular média de: idade, peso, altura
9   Calcular média de: idade, peso, altura dos homens
10  Calcular média de: idade, peso, altura das mulheres
11 - SAIR
*)
uses
  CRT;
type
  tRegistroCliente = record
                       nome   :string;
                       CPF    :string;
                       sexo   :char;
                       idade  :byte;
                       peso   :byte;
                       altura :real;
                     end;
var
  registrosCliente :array [1..5] of tRegistroCliente;
  clienteNovo,
  clienteAlterado :tRegistroCliente;
  totalRegistros :integer;
  opcao :string[2];
  i :integer;
  
BEGIN
opcao := '0';
totalRegistros := 0;
while (opcao <> '11') do
  begin
  ClrScr;
  writeln('');
  writeln(' *** MENU ***');
  writeln('');
  writeln(' 1  Cadastrar cliente                                  ');
  writeln(' 2  Consultar cliente por nome                         ');
  writeln(' 3  Consultar cliente por CPF                          ');
  writeln(' 4  Editar informações do cliente (consultar por nome) ');
  writeln(' 5  Mostrar todos os clientes                          ');
  writeln(' 6  Mostrar todas as mulheres                          ');
  writeln(' 7  Mostrar todos os homens                            ');
  writeln(' 8  Calcular média de: idade, peso, altura             ');
  writeln(' 9  Calcular média de: idade, peso, altura dos homens  ');
  writeln(' 10 Calcular média de: idade, peso, altura das mulheres');
  writeln(' 11 SAIR                                               ');
  writeln('');
  write  (' => ');
  readln(opcao);
  
  case opcao of
    '1'  :begin
          totalRegistros := totalRegistros + 1;
          writeln('');
          writeln(' *** CADASTRO DE CLIENTES ***');
          writeln('');
          write  ('Nome : '); readln(clienteNovo.nome);
          write  ('CPF  : '); readln(clienteNovo.CPF);
          //...
          
          //aqui poderia perguntar se deseja "salvar" ou não..
          registrosCliente[totalRegistros] := clienteNovo;
          
          end;
    '2'  :begin
          
          end;
          
    '00' :begin //*utilizado em testes
          for i:=1 to totalRegistros do
            begin
            writeln('Nome : ', registrosCliente[i].nome);
            writeln('CPF  : ', registrosCliente[i].CPF);
            //...
            readln();
            end;
          end;
    end; //fim case
  end;
END.

 

Qualquer dúvida é só perguntar.

adicionado 8 minutos depois

Adendo:

Tem tiver utilizando o Free Pascal (como eu) e quer colocar os acentos corretamente, basta utilizar diretiva, como no exemplo abaixo:

{$CODEPAGE UTF8}
program Cadastro_de_clientes;
(*
1   Cadastrar cliente
//..

tela utf8.png

Link para o comentário
Compartilhar em outros sites

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