Ir ao conteúdo

Posts recomendados

Postado

Preciso fazer um programa de acordo com a questão!

 

"Escreva um programa que leia dois vetores A e B de 5 números inteiros e

calcule um terceiro vetor que contenha todos os elementos que estão presentes

no vetor A mas que não estão presentes no vetor B. O terceiro vetor não

deverá armazenar valores repetidos."

 

Program Pzim;
Uses crt;
Const
    ORDEM=5;
Type
    vetor=array[1.. ORDEM] of integer;
  
Var
    vet1, vet2, vet3: vetor;
    k, j, l, cont: integer;
    repeated: boolean;
Procedure leVetor(var vet: vetor);
    Var
        k: integer;
    Begin
        for k:=1 to ORDEM do
        Begin
            write('Digite o valor do vetor de posição ',k,': ');
            readln(vet[k]);
        End;
    End;
      
Procedure imprimirVetor(var vet: vetor; cont: integer);
    Var
        k: integer;
    Begin
        writeln;
        for k:=1 to cont do
            write(vet[k],' ');
    End;  
      
Begin
    textColor(yellow);
    writeln('Lendo o primeiro vetor: ');
    textColor(white);
    leVetor(vet1);
    textColor(yellow);
    writeln('Lendo o segundo vetor: ');
    textColor(white);
    leVetor(vet2);
    cont:=0;
    for k:=1 to ORDEM do
        begin
            for j:=1 to ORDEM do
            begin
                if vet1[k]=vet2[j] then begin
                                                                    repeated:=false;
                                                                    for l:=1 to ORDEM do
                                                                    begin
                                                                        if vet1[k]=vet3[l] then repeated:= true;
                                                                    end;
                                                                    if repeated=false then begin
                                                                                                                         cont:= cont+1;
                                                                                                                         vet3[cont]:=vet1[k];
                                                                                                                     end;
                                                                end;
            end;
        end;
  
    textColor(3);
    writeln('O vetor resultante é: ');
    imprimirVetor(vet3, cont);
    readln;                                                                   
End.

 

Poderiam me ajudar, de porque não esta dando certo!

  • Curtir 1
Postado

@roogeraraujo      Seu código está certo,mas não está funcionando porque você

colocou o resultado da comparação fora do lugar ali no loop L, que nem precisa

dele, então removi esse loop e coloquei o resultado da comparação de um vetor

com o outro no lugar certo que é depois do loop J  verificar todos os números .

aqui seu código com as modificações :

Program Pzim;
Uses crt;
Const
    ORDEM=5;
Type
    vetor=array[1.. ORDEM] of integer;
  
Var
    vet1, vet2, vet3: vetor;
    k, j, l, cont   : integer;
    repeated        : boolean;
Procedure leVetor(var vet: vetor);
    Var
        k: integer;
    Begin
        for k:=1 to ORDEM do
        Begin
            write('Digite o valor do vetor de posição ',k,': ');
            readln(vet[k]);
        End;
    End;
      
Procedure imprimirVetor(var vet: vetor; cont: integer);
    Var
        k: integer;
    Begin
        writeln('    ');
        for k:=1 to cont do
        begin
            write(vet[k],' ');
            delay(1000);  
        end;
    End;  
//********************  inicio  ***************************      
Begin
    clrscr();
    textColor(yellow);
    writeln('Lendo o primeiro vetor: ');
    textColor(white);
    leVetor(vet1);
    textColor(yellow);
    writeln('Lendo o segundo vetor: ');
    textColor(white);
    leVetor(vet2);
    cont:=0;
    for k:=1 to ORDEM do
      begin
        repeated:=false;
        for j:=1 to ORDEM do
        begin
          if vet1[k]=vet2[j] then 
          begin
            repeated:=true;
          end;
        end;           
        if repeated=false then
        begin
          cont:= cont+1;
          vet3[cont]:=vet1[k];
        end;
      end;
      clrscr();
      textcolor(3);
      writeln('O vetor resultante é: ');
      imprimirVetor(vet3, cont);
      writln;writeln;
      write('Valores Em vet1= ');
      imprimirVetor(vet1, ORDEM);
      writeln;
      write('Valores Em vet2= ');
      imprimirVetor(vet2, ORDEM);
      writeln;
      textcolor(white);
      writeln('Espere Um Pouco Para Terminar');
      delay(5000);
End.readln; 

 

  • Curtir 1
  • Membro VIP
Postado

Olá.

 

Complementando:

 

1) PASSAGEM DE PARÂMETRO

Para imprimir não é necessário passar o vetor vet como "referência" (usando o var), pois não haverá alterações no vetor, nem que elas precisam ser salvas.

 

Em 13/04/2017 às 14:46, roogeraraujo disse:

Procedure imprimirVetor(var vet: vetor; cont: integer);

 

Trocar para:

Procedure imprimirVetor(vet: vetor; cont: integer);

obs.: já no leVetor() precisa, pois o vetor é alterado, e os dados precisão persistir...

 

2) REQUISITOS

Lembrar que não pode repetir..

Em 13/04/2017 às 14:46, roogeraraujo disse:

"...O terceiro vetor não deverá armazenar valores repetidos."

 

Testei aqui e não funcionou essa parte...

 

 

3) PADRÕES DE NOMENCLATUA (sugestão)

Não vejo motivo para utilizar "português" e "inglês"... ou padroniza só em português, ou padroniza só em inglês.

 

Ex.: repeated por repetido.

 

 

4) PADRÃO DE IDENTAÇÃO

O espaçamento em parte do programa principal está diferente do resto...

 

Begin
...
    cont:=0;
    for k:=1 to ORDEM do
    begin
        repeated:=false;
        for j:=1 to ORDEM do
        begin
            if vet1[k]=vet2[j] then 
            begin
               repeated:=true;
            end;
        end;           
        if repeated=false then
        begin
            cont:= cont+1;
            vet3[cont]:=vet1[k];
        end;
    end;
    clrscr();
    textcolor(3);
    writeln('O vetor resultante é: ');
...
End.

 

**

 

No aguardo.

  • Curtir 1
Postado

@Simon Viegas     realmente há um  erro nesse código, pois ele imprime valores

repetidos no vetor vet3 e isso não pode,  eu não prestei atenção nesse detalhe 

e exclui o loop L, que na verdade precisa dele sim,  então inclui ele novamente

pois é ele que verifica se o número em vet3 está ou não repetido.

então o código fica assim :

Program Pzim;
Uses crt;
Const
    ORDEM=5;
Type
    vetor=array[1.. ORDEM] of integer;
  
Var
    vet1, vet2, vet3: vetor;
    k, j, l, cont   : integer;
    repetido        : boolean;
Procedure leVetor(var vet: vetor);
    Var
        k: integer;
    Begin
        for k:=1 to ORDEM do
        Begin
            write('Digite o valor do vetor de posição ',k,': ');
            readln(vet[k]);
        End;
    End;
      
Procedure imprimirVetor( vet: vetor; cont: integer);
    Var
        k: integer;
    Begin
        writeln('---> ');
        for k:=1 to cont do
        begin
            write(vet[k],' ');
            sound(1000);
            delay(300);
            nosound;
            delay(200);  
        end;
    End;  
//********************  inicio  ***************************      
Begin
  clrscr();
  textColor(yellow);
  writeln('Lendo o primeiro vetor: ');
  textColor(white);
  leVetor(vet1);
  textColor(yellow);
  writeln('Lendo o segundo vetor: ');
  textColor(white);
  leVetor(vet2);
  cont:=0;
  for k:=1 to ORDEM do
  begin
    repetido:=false;
    for j:=1 to ORDEM do
    begin
      if vet1[k]=vet2[j] then 
      begin
        repetido:=true;
      end;
    end;           
    if repetido=false then
    begin
      for l:=1 to ORDEM do
      begin
        if vet3[l]=vet1[k] then
        begin
          repetido:=true;
        end;
      end;
      if repetido=false then
      begin
        cont:=cont+1
        vet3[cont]:=vet1[k];
      end;
    end;
  end;
  clrscr();
  textcolor(3);
  writeln('O vetor resultante é: ');
  imprimirVetor(vet3, cont);
  writln;writeln;
  write('Valores Em vet1= ');
  imprimirVetor(vet1, ORDEM);
  writeln;
  write('Valores Em vet2= ');
  imprimirVetor(vet2, ORDEM);
  writeln;
  textcolor(white);
  writeln('Espere Um Pouco Para Terminar');
  delay(5000);
End.readln; 

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!