Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Repetição de números no vetor


Visitante

Posts recomendados

Estou com um um exercício e um código e não consigo encontrar o que está errado. 

 

Faça um programa em Pascal que receba um vetor A de 10 posições contendo números inteiros. Determine e mostre, a seguir, quais elementos de A estão repetidos e quantas vezes cada um se repete.

 

Program EX2;
var	A:array[1..10] of integer;
		B:array[1..10] of integer; 
  	i, j, k, d, cont: integer;
  	  	
Begin

  for i:=1 to 10 do
		begin
	 		writeln('Digite o valor da posição ', i,' do vetor: ');
  		readln(A[i]);
  	end;

	j:=1;
	for i:=1 to 10 do
	  begin
	  	B[i]:=0;
	  end;
  
  for k:=1 to 10 do 
    begin
    	if (A[k]=A[i]) then cont:=cont+1;
  		for d:=1 to 10 do
  			begin
      		if (B[d]=A[k]) then cont:=-1;
    		end;
  
			If (cont>1) then 
				begin
      		B[j]:=A[k];
      		j:=j+1;
      		writeln('O número ', A[k], ' aparece ', cont, ' vezes.');
    		end;
  	end;
   
readkey;
End.

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Sobre:

Em 14/08/2020 às 20:01, jeonjungkook disse:

Estou com um um exercício e um código e não consigo encontrar o que está errado. 

 

@jeonjungkook, antes de verificar a implementação, seria interessante revisar a lógica que está tentando implementar... temos 2 pontos distintos:

  1. Definição da lógica criada para solucionar o problema;
  2. Implementação da lógica definida.

Não adiantaria tentar corrigir a implementação do código, se a lógica escolhida não for satisfatória, ou seja: no máximo estaria criando um código certo para um algoritmo errado... não adiantaria! Entende? O que adiantaria fazer um delicioso hambúrguer se o cliente pediu um cachorro-quente?

 

 

Apenas como uma outra referência, reindentei o código:

 

Obs.: o é o "mesmo" código, apenas arrumei o "texto" de outra forma e inserir outros pequenos detalhes que não influenciam na lógica.

{$CODEPAGE UTF8} //uma forma de tentar conseguir imprimir palavras acentuadas
program EX2;
uses
  CRT; //necessário em alguns compiladores
var
  A: array[1..10] of integer;
  B: array[1..10] of integer; 
  i, j, k, d,
  cont: integer;
  
begin
for i:=1 to 10 do
begin
  writeln('Digite o valor da posição ', i, ' do vetor: ');
  readln(A[i]);
end;

j := 1;
for i:=1 to 10 do
begin
  B[i]:=0;
end;

for k:=1 to 10 do 
begin
  if (A[k] = A[i]) then
    cont := cont+1;
    
  for d:=1 to 10 do
  begin
    if (B[d] = A[k]) then
      cont:=-1;
  end;

  if (cont>1) then 
    begin
    B[j]:=A[k];
    j:=j+1;
    writeln('O número ', A[k], ' aparece ', cont, ' vezes.');
    end;
end;

ReadKey;
end.

 

Veja: NÃO analisei a lógica do que você está tentando implementar, mas já podemos ter um problema, por exemplo, aqui:

  if (A[k] = A[i]) then
    cont := cont+1;

O valor de i estaria fixo, ou seja: estaria comparando sempre com a mesma posição... parece suspeito.

 

 

 

O que você definiu como estratégia para solucionar esse problema? Tente descrever o que você está tentando fazer. Daí analisamos e, só após, tenta implementar um código.

Obs.: sugiro que poste uma pelo menos uma explicação, e caso deseje, também já pode tentar implementar enquanto discutindo sobre o que foi proposto, mas acho que é necessário entendermos o que quer fazer.

 

No aguardo.

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