Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Edna Aparecida

[Resolvido] Matrizes e vetores

Recommended Posts

Gostaria de ajuda no exercicio abaixo, onde não consigo finaliza-lo os erros que apresentam são:

1- O resultado de qualquer numero que se coloca para a temperatura é sempre o mesmo. independente do numero.

2- A segunda resposta que é a maior temperatura fica como zeros.

O terceiro erro eu sei acertar. onde depois acerto primeiro preciso resolver os primeiros.

Grata desde já.

program temperaturavetor;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
a: array [1..20] of integer;
i: integer;
c_menor, c_maior,media, c: real;

begin
i:=0;

for i:=1 to 20 do
begin
writeln ('Escreva valor de a',i);
readln(a[i]);
end;

for i:= 1 to 20 do
begin
C:= 5/9 * (i-32);
writeln(i:6, c:12:2);
end;
if i=0 then

begin
c_menor:=c;
c_maior:=c;
end
else
if c < c_menor then

begin
c_menor:=c;
end
else if c > c_maior then
begin
c_maior:=c;
end;

begin
writeln ('A menor temperatura digitada foi:',c_menor);
writeln ('A maior temperatura digitada foi:',c_maior);
writeln ('tecle enter para sair');
readln;
end;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O primeiro problema se encontra nessa linha aqui:

C:= 5/9 * (i-32);

Perceba que i varia de 1 a 20, então sua resposta sempre vai variar de

5/9 * (-31) até 5/9 * (-12).

Acredito que o seu objetivo era pegar o conteudo do vetor e não a posição dele, para isso o código dessa linha deveria ser:

C:= 5/9 * (a-32);

Não conheço essa linguagem, mas acho que tem mais coisas estranhas. voce faz um loop pra C receber todos os valores do vetor, mas como C não é um vetor, ele só vai receber o ultimo valor (seu for termina ali naquele end logo após o for). O seu objetivo é armazenar todos os valores? É fazer uma soma com todos os valores?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro estou muito agradecida por ter me respondido não sabe o quanto.

Agora respondendo sua pergunta a primeira etapa respondi que esta aqui abaixo e no caso como entendi também que a resposta parava em c eu dei um outro nome para mudar o c. Mais mesmo assim não finalizou neste caso acho que teria que colocar um outro comando de repetição talvez, embora queria entender porque o laço for não fecha esta resposta. Vou colocar o exercicio novamente abaixo para ver como ficou. Quanto a lnguagem não se preocupe pode ser em portugol/e outra. Somente preciso entender a logica, porque é nisto que erro muito.

C:= 5/9 * (a-32);

writeln(a:6, c:12:2);

temp:=c ;

exercicio:

program temperaturavetor;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
a: array [1..20] of integer;
i: integer;
temp,temp_menor, temp_maior, c: real;

begin
temp_maior:=0;
for i:=1 to 20 do
begin
writeln ('Escreva valor de a',i);
readln(a[i]);
end;

for i:= 1 to 20 do
begin

C:= 5/9 * (a[i]-32);
writeln(a[i]:6, c:12:2);
temp:=c ;
end;
if i=0 then

begin
temp_menor:=temp;
temp_maior:=temp;
end
else
if temp < temp_menor then

begin
temp_menor:=temp;
end;

if temp > temp_maior then
begin
temp_maior:=temp;
end;

begin
writeln ('A menor temperatura digitada foi:',temp_menor:2:2);// aqui é deveria pegar a temperatura digitada menor e sim esta pegando a ultima/e ou mostrando zeros as vezes.
writeln ('A maior temperatura digitada foi:',temp_maior:2:2);// aqui o mesmo que acima porém a maior esta ocorrendo o mesmo erro.
writeln ('tecle enter para sair');
readln;
end;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

voce fez o temp receber c, mas voce só usa o temp no final do programa, então ele novamente só vai pegar o ultimo valor. O que voce tem que fazer é colocar a verificação de temperatura dentro do for, pra que ele verifique pra todos os valores de temperatura (variando de 1 em 1) se aquele é maior que o anterior.

Como disse, não conheço bem essa linguagem, e acho que se eu colocasse em C, voce que se complicaria. Então uma tentativa nessa linguagem aí:

program temperaturavetor;

{$APPTYPE CONSOLE}

uses
SysUtils;

var
a: array [1..20] of integer;
i: integer;
temp_menor, temp_maior, c: real; //removi a variável temp, ela não é necessária

begin
temp_maior:=-9999; //coloquei um valor bem baixo, para que qualquer temperatura seja maior
temp_menor:=9999; //coloquei um valor bem alto, para que qualquer temperatura seja menor
for i:=1 to 20 do
begin
writeln ('Escreva valor de a',i);
readln(a[i]);
end;

for i:= 1 to 20 do
begin //perceba que eu coloquei a comparação das temperaturas dentro desse for! Precisa ocorrer aqui!

C:= 5/9 * (a[i]-32);
writeln(a[i]:6, c:12:2);
if C < temp_menor then //se a temperatura atual for menor que a menor até agora, então...
begin
temp_menor:= C; //agora a menor temperatura é o valor atual de C
end
if C > temp_maior then //se a temperatura atual for maior que a maior até agora, então...
temp_maior:=C; //agora a maior temperatura é o valor atual de C
end
end; //perceba que eu coloquei a comparação das temperaturas dentro desse for! Precisa ocorrer aqui!
writeln ('A menor temperatura digitada foi:',temp_menor:2:2);// aqui é deveria pegar a temperatura digitada menor e sim esta pegando a ultima/e ou mostrando zeros as vezes.
writeln ('A maior temperatura digitada foi:',temp_maior:2:2);// aqui o mesmo que acima porém a maior esta ocorrendo o mesmo erro.
writeln ('tecle enter para sair');
readln;
end;
end.

Pode ter erros de sintaxe, testa aí. Eu até achei estranho que no ultimo end voce usa ponto final, e nos outros ponto e virgula, que voce usa uns begin sem usar condições ou loops... Mas como não conheço a linguagem, fiz igual...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou super agradecida o erro era tÃo obvio e eu nÃo enchergava primeiro inverti as de comparaÇÃo e deixei muitos begins sem necessidade ai criei uma variavel sem necessidade, mas agora aprendi. Grata mesmo. Deu certo.

Fique com deus.

Edna

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





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

×