Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Não consigo resolver a condição par


Posts recomendados

Olá, estou dúvida em relação ao meu programa que está contando os números pares negativos, o que posso fazer para solucionar esse problema?

 

progam exercicio;

var N, CONJUNTO, CONTADOR, CONTPAR : integer;
      VET :array [1..100] of integer;

Begin
    writeln ('Forneça a quantidade de elementos do conjuto = ');
    readln (N);
    
    for CONJUNTO:= 1 to N do
    begin
    
      while (VET[CONJUNTO] <= 0)do
      begin
            writeln ('Digite um número = ');
            readln (VET[CONJUNTO]);
            
            if (VET[CONJUNTO] > 5) then 
              CONTADOR:= CONTADOR + 1 ;
              
            if (VET[CONJUNTO] mod 2 = 0) then
                CONTPAR := CONTPAR + 1; 
        end;                                   
    end;
    
    writeln (CONTADOR, ' elementos são maiores do que 5');
    writeln (CONTPAR, ' elementos são pares');
End.

 

Link para o comentário
Compartilhar em outros sites

@Antonio Barco    você quer contar os negativos que são par ?  então use a função abs que pega o sinal de negativo e converte para positivo .

ou você que que o programa não conte os negativos , ai você pode colocar mais uma comparação nesse if , e poderia ser assim  :

if (VET[CONJUNTO] > 0 and VET[CONJUNTO] mod 2 = 0) then
    CONTPAR := CONTPAR + 1;
end;                            

 

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

@devair1010

3 minutos atrás, devair1010 disse:

@Antonio Barco    você quer contar os negativos que são par ?  então use a função abs que pega o sinal de negativo e converte para positivo .

ou você que que o programa não conte os negativos , ai você pode colocar mais uma comparação nesse if , e poderia ser assim  :


if (VET[CONJUNTO] > 0 and VET[CONJUNTO] mod 2 = 0) then
    CONTPAR := CONTPAR + 1;
end;                            

 

Eu utilizei essa função, mas está dando erro semantico, tipo invalido na condição de igualdade.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Antonio Barco, alguns pontos:

 

1# Sobre o erro de sintaxe

1 hora atrás, Antonio Barco disse:

@devair1010

Eu utilizei essa função, mas está dando erro semântico, tipo invalido na condição de igualdade.

 

Utilize () para separar as partes da expressão. Exemplo:
 

if (VET[CONJUNTO] > 0) and (VET[CONJUNTO] mod 2 = 0) then

 

ou

 

if ((VET[CONJUNTO] > 0) and (VET[CONJUNTO] mod 2 = 0)) then


Tanto faz.

 

 

 

2# Sobre a tua tentativa

O provável problema é que você colocou coisa de mais dentro do while. Poderia fica com algo assim:

 

  for CONJUNTO:= 1 to N do
  begin
    while (VET[CONJUNTO] <= 0)do
    begin
      writeln ('Digite um número = ');
      readln (VET[CONJUNTO]);
    end;
    
    if (VET[CONJUNTO] > 5) then 
      CONTADOR := CONTADOR + 1 ;
    
    if (VET[CONJUNTO] mod 2 = 0) then
      CONTPAR := CONTPAR + 1; 
  end;


Ou seja: "ficar repetindo enquanto o número for negativo


Daí, talvez seria bom colocar um aviso ou algo que indique que está lendo um novo número para a mesma posição do vetor.
 

 

 

3# Sobre paridade

Então, pelo que consta, a definição de número pares ou ímpares é para inteiros, ou seja: estaria incluso também os negativos e o zero.

Aí, aceitar ou não negativos vai depender do que está no enunciado... ou seja: não aceitar negativos apenas pela definição dos requisitos lá no enunciado...

 

 

 

***

 

Adendo:

Sobre:

1 hora atrás, devair1010 disse:

@Antonio Barco    você quer contar os negativos que são par ?  então use a função abs que pega o sinal de negativo e converte para positivo

 

@devair1010, creio que não precisaria. Exemplo: "-4 / 2 = -2, com resto 0. Logo, é par". O código iria funcionar da mesma forma (só precisaria remover o while, que no código atual estaria "errado").

 



@Antonio Barco, tenta aí corrigir o código. Após, poste o enunciado completo da questão e o código atual.

 

ADENDO 3:
Sobre a nomenclatura, seria recomentado utilizar definições mais semânticas.. exemplo:
 

var 
  N, Contador, ContMaior5, ContParPositivo : integer;
  vetNumeros : array [1..100] of integer;


Em fim... no mínimo mude esse "CONJUNTO". Acho que ficou meio sem nexo para o contexto.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!