Ir ao conteúdo
  • Cadastre-se

[PASCALZIM] Três vetores somados


Posts recomendados

Primeiramente boa noite a todos(as), sou novo no fórum pois estou iniciando agora o baracharelado em sistemas de informação e como não poderia faltar já temos alguns exercícios, até então estava indo tranquilo porém pela falta de material na facul eu estou com dificuldades nesta atividade, se alguém puder ajudar ficarei agradecido .
 
Preciso de um programa que : Leia dois vetores de 10 posições, e alimente um terceiro vetor com a soma dos dois primeiros vetores, em seguida mostre qual o maior valor do terceiro vetor.
 
* Minha dificuldade está em armazenar os valores sem sobrescrever, pois eu só consegui até o momento pegar os dois últimos valores somados.
 
Meu código até o momento. ( ME DESCULPEM QUALQUER ERRO OK ? )
 

Program tresvetores ; var   vetor1:array[1..10] of integer;  vetor2:array[1..10] of integer;  vetor3:array[1..10] of integer; i, aux : integer;Beginfor i := 1 to 4 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);        writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);       vetor3[i] := vetor1[i] + vetor2[i];       end;          End.

 
 
Me ajudem por favor galera ?  Lembrando , PASCALZIM .
 
 
Obrigado desde já pessoal !!!!!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Não entendi a dúvida.

Aparentemente está certo. (Tirando que seu FOR só tem 4 posições e os vetores são de 10 posições).

Só falta você exibir o vetor3 (depois do END do faço FOR).


O normal seria alimentar primeiro o vetor 1, depois alimentar o vetor 2, depois somar, depois mostrar vetor 3.

Você está alimentando os 2 vetores ao mesmo tempo.

Link para o comentário
Compartilhar em outros sites

Não entendi a dúvida.

Aparentemente está certo. (Tirando que seu FOR só tem 4 posições e os vetores são de 10 posições).

Só falta você exibir o vetor3 (depois do END do faço FOR).

O normal seria alimentar primeiro o vetor 1, depois alimentar o vetor 2, depois somar, depois mostrar vetor 3.

Você está alimentando os 2 vetores ao mesmo tempo.

 

Olá Math , então a questão é esta : 

 

Preciso de um programa que : Leia dois vetores de 10 posições, e alimente um terceiro vetor com a soma dos dois primeiros vetores, em seguida mostre qual o maior valor do terceiro vetor.

 

No caso ali tem 4 posições apenas para testar.

 

Deste jeito que eu fiz o vetor3 está recebendo apenas a soma dos dois ultimos valores digitados, exemplo : o usuário digitou : 10,20,30,40,50,60,70,80 o vetor3 está recebendo apenas 70+80 ... eu preciso que some a cada dois valores digitados e me mostre o maior valor do vetor3.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Teste isso:

for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end;for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end;for i := 1 to 10 doBegin      vetor3[i] := vetor1[i] + vetor2[i]; end;for i := 1 to 10 doBegin    writeln('TERCEIRO vetor: ', vetor3[i]);   end;
Link para o comentário
Compartilhar em outros sites

 

Teste isso:

for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end;for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end;for i := 1 to 10 doBegin      vetor3[i] := vetor1[i] + vetor2[i]; end;for i := 1 to 10 doBegin    writeln('TERCEIRO vetor: ', vetor3[i]);   end;

 

Olá Math, olha ficou legal essa forma que você me mandou ai, se não for pedir de mais você poderia me ajudar a escrever apenas o maior valor do vetor3 ? 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Pra mostrar o maior valor você teria que mudar uns trechos:

for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end;for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end;for i := 1 to 10 doBegin      vetor3[i] := vetor1[i] + vetor2[i]; end;//crie uma variável "maior" no início do programafor i := 1 to 10 doBegin    if i == 1 then        maior := vetor3[i]    else if vetor[i] > maior then        maior := vetor3[i];end;for i := 1 to 10 doBegin    writeln('TERCEIRO vetor: ', vetor3[i]);   end;writeln('MAIOR numero do TERCEIRO vetor: ', maior);   
Link para o comentário
Compartilhar em outros sites

Pra mostrar o maior valor você teria que mudar uns trechos:

for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end;for i := 1 to 10 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end;for i := 1 to 10 doBegin      vetor3[i] := vetor1[i] + vetor2[i]; end;//crie uma variável "maior" no início do programafor i := 1 to 10 doBegin    if i == 1 then        maior := vetor3[i]    else if vetor[i] > maior then        maior := vetor3[i];end;for i := 1 to 10 doBegin    writeln('TERCEIRO vetor: ', vetor3[i]);   end;writeln('MAIOR numero do TERCEIRO vetor: ', maior);   

 

Com este code não obtive êxito Math, estou usando o Pzim para programar e está dando erro em algumas sintaxes e fui modificar e a saída não ficou perfeita ...

 

Olha como eu fiz, mas não está dando certo.

 

Program tresvetores ; var vetor1:array[1..10] of integer; var vetor2:array[1..10] of integer; var vetor3:array[1..10] of integer; var i, maior : integer;Beginfor i := 1 to 4 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end; for i := 1 to 4 doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end; for i := 1 to 4 doBegin      vetor3[i] := vetor1[i] + vetor2[i]; end; //crie uma variável "maior" no início do programafor i := 1 to 4 doBegin    if ( i = 1 ) then begin        maior := vetor3[i]                 end;     if vetor3[i] > maior then begin        maior := vetor3[i];        endend; for i := 1 to 10 doBegin    writeln('TERCEIRO vetor: ', vetor3[i]);   end; writeln('MAIOR numero do TERCEIRO vetor: ', maior);   End.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Sua declaração de variáveis está errada.

Program tresvetores ; var  vetor1:array[1..10] of integer; vetor2:array[1..10] of integer; vetor3:array[1..10] of integer; i, maior : integer;

Pra fazer um teste correto, defina o valor máximo do array do mesmo tamanho do que você definiu no FOR.

array[1..4] >>>>> for i:= 1 to 4.

 

Aqui está funcionando aqui perfeitamente.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá a todos...

 

Só uns comentários:

 

 

 

1)  Declaração de variáveis:

 

Além da declaração típica:

var  vetor1:array[1..10] of integer;  vetor2:array[1..10] of integer;  vetor3:array[1..10] of integer;

É possível também separar as variáveis por vírgulas.

var  vetor1, vetor2, vetor3 :array[1..10] of integer;

ou como gosto:

var  vetor1,  vetor2,  vetor3 :array[1..10] of integer;

(essa separação por linha, é apenas estética... não influencia no código, ou seja, esse dois exemplos são exatamente iguais)

 

Separando por vírgulas, você, por exemplo, só precisaria editar o "tipo" uma vez. (como mudar de 1..10, para 1..4).
 

 

 

2) Modo de teste

Para efetuar os testes, nesse contexto, basta apenas ajustar a quantidade nos laços de repetição (for), ou seja, vai funcionar normalmente deixando o array maior, "apenas" vai meio que esbarrar num desperdício, o que pode ser considerado um erro de lógica... mas que para fins de testes, não irá impactar em nada.

 

2.1) Uso de constantes (é apenas um conceito, se dificuldades pode ignorar)

Já pegando esse gancho de efetuar testes, para facilitar a troca do tamanho, poderia usar do conceito de constante, ex.:

 

Nas variáveis

const //constantes é análogo a variável, só que o valor é fixo, e tem também a vantagem de ser "pre-definida"  MAX = 10; //quantidade máxima de entradasvar  vetor1:array[1..MAX] of integer;  vetor2:array[1..MAX] of integer;  vetor3:array[1..MAX] of integer;

ou no caso:

const  MAX = 10;var  vetor1,  vetor2,  vetor3 :array[1..MAX] of integer;

e nos laços, ex.:

for i := 1 to MAX doBegin    writeln('Digite o ', i , ' valor para ser armazenado no PIRMEIRO vetor');    readln(vetor1[i]);   end; for i := 1 to MAX doBegin    writeln('Digite o ', i , ' valor para ser armazenado no SEGUNDO vetor');    readln(vetor2[i]);end; for i := 1 to MAX doBegin      vetor3[i] := vetor1[i] + vetor2[i];end;

Ou seja, bastaria mudar o valor de MAX para o desejado, no caso 4 ou 10... ou o valor que desejar... A ideia é bem simples, o compilador apenas vai pegar o valor que está na constante e vai jogar no lugar, logo ficando mais prático a edição.


Obs.: O seu primeiro código não está errado. Pelo que observei, a conta está sendo feita corretamente, faltava apenas exibir o resultado. Mas como comentado por Math.Pi, fica melhor separando a leitura individualmente...

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

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