Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
sonicboladao

ExercÍcio em pascal (ajuda)

Recommended Posts

Fala ae galera..

Gostaria que alguém me ajudasse com esses exercícios de Algoritmo em Pascal.

1) Fazer um Algoritmo para ordenar uma lista com 5 candidatos a uma eleição de acordo com os votos recebidos, como está no exemplo:

Ricardo - 10 votos

Antonio - 15 votos

Maria - 8 votos

João - 5 votos

Junior - 20 votos

Ficando assim:

Junior - 20 votos

Antonio - 15 votos

Ricardo - 10 votos

Maria - 8 votos

João - 5 votos

2) Fazer um algoritmo para procurar em uma lista de profissões, a profissão referente ao código informado pelo usuário.

Agradeço desde já ! :cool:

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) Use uma matriz para guardar os valores do nome do candidato e a qtde de votos. Depois você faz um loop para ir comparando os votos. E saia do loop quando o flag de caso tenha mudado um registro for false

Exemplo:

while (flag)

flag = false;

for(x=0; x<=qtdeCandidatos; x++)

if(candidato[x][votos] < candidato[x+1][votos])

flag == true;

aux = candidato[x];

candidato[x] = candidato[x+1];

candidato[x+1] = aux;

mais ou menos assim.

2) Mesma coisa que o de cima.

Só que bem mais simples pois você não precisa ordenar.

Faça uma matriz com o id e o nome da profissao.

Guarde o ID que o usuário digitou em uma variável e depois procure na matriz via loop o ID que o usuário digitou, caso encontre informe a profissao, caso não encontre mostre que o registro não foi encontrado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Entendi mais ou menos..

    Pois a linguagem que uso não sei o que é esse x++ por exemplo..

    eu uso o PascalZIM, não por opção própria, mas é o que o professor nos ensinou a usar.

    A primeira eu consegui e ficou assim:

    Program Ordenacao ;

    type tipocand = record
    nome: string;
    votos: integer;
    end;

    var
    cand: array [1..3] of tipocand;
    i,iaux,aux: integer;
    aux2: string;


    Begin
    for i := 1 to 3 do
    begin
    writeln ('Informe o nome do candidato:');
    readln (cand[i].nome);
    writeln ('Informe quantos votos ', cand[i].nome, ' recebeu:');
    readln (cand[i].votos);

    end;
    for i := 1 to 3 do
    begin
    Writeln (cand[i].nome, ' - ', cand[i].votos,' votos');
    end;

    writeln ('------------- Ordenado -------------');
    for iaux := 1 to 3 do
    begin
    for i := 1 to 3 do
    begin

    if (cand[iaux].votos > (cand[i].votos)) then
    begin
    aux := cand[iaux].votos;
    cand[iaux].votos := cand[i].votos;
    cand[i].votos := aux;
    aux2 := cand[iaux].nome;
    cand[iaux].nome := cand[i].nome;
    cand[i].nome := aux2;

    end;
    end;
    end;

    for i := 1 to 3 do
    begin
    Writeln (cand[i].nome, ' - ', cand[i].votos,' votos');
    end;


    End.

    Editado por gandalfnho
    Flood / use a tag CODE

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    uma dica:

    ao invés de:


    var
    cand: array [1..3] of tipocand;
    i,iaux,aux: integer;
    aux2: string;

    você poderia fazer isso:


    var
    cand: array [1..3] of tipocand;
    i,iaux: integer;
    aux:tipocand;

    assim na ordenção ficaria:


    for iaux := 1 to 3 do
    begin
    for i := 1 to 3 do
    begin

    if (cand[iaux].votos > (cand[i].votos)) then
    begin
    aux := cand[iaux];
    cand[iaux] := cand[i];
    cand[i]:= aux;
    end;
    end;
    end;

    nesse caso não reduziria muito o código, mas no caso de programas com registros maiores irá te poupar muito trabalho

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Vou fazer uma sugestão para otimizar a execução do código:


    for iaux := 1 to 4 do
    begin
    for i := iaux + 1 to 5 do
    begin
    if (cand[iaux].votos > (cand[i].votos)) then
    begin
    aux := cand[iaux];
    cand[iaux] := cand[i];
    cand[i]:= aux;
    end;
    end;
    end;

    Observações:

    - como são 5 candidatos considerei um array [1..5]

    - quando no for externo o iaux = 1, o i no for interno vai de 2 (iaux + 1) a 5, já que não é

    preciso comparar o candidato da primeira ocorrência com ele mesmo;

    - quando no for externo o iaux = 2, o i no for interno vai de 3 (iaux + 1) a 5, já que após o

    primeiro "loop" do for externo a primeira ocorrência com certeza possui o candidato

    mais votado. O mesmo raciocínio é utilizado nas ocorrências seguintes;

    - o iaux no for externo vai até 4, já que não é preciso comparar o candidato da ocorrência 5

    com ele mesmo;

    - não fiz um teste de execução da rotina, mas acredito que está certa.

    Espero ter conseguido passar a ideia.

    Editado por gandalfnho
    Propaganda

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Crie uma conta ou entre para comentar

    Você precisar ser um membro para fazer um comentário






    Sobre o Clube do Hardware

    No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

    ×