Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Zedd

[Resolvido] Programa roda,mas não mostra o resultado (Pascal)

Recommended Posts

Olá este é meu primeiro tópico e peço desculpas se estiver fora das regras em algum ponto,mas enfim :

 

 

O problema é o seguinte :

 

"Escreva um algoritmo que lê um vetor A(10) e escreva a posição de cada elemento primo deste vetor."

 

 

Meu código :

 

 

program  posP;

var   a: array[1..10] of integer;
      cont,op,x,y,i:   integer;


begin

cont:=0;

           for x:=1  to 10  do
             begin
                        writeln('Digite o numero:');
                        readln(a[x]);
              end;

           for i:=1  to  10   do
             begin

                 for y:=1  to  a[i]   do
                    begin
                          op:=   a[i]  mod y;

                           if(op=0)  then
                             begin
                                       cont:= cont + 1;
                              end;
                     end;

               if(cont=2) then
                 begin
                                  writeln('A posicao que contem o 
                                   numero primo e:', i);  
                  end;                  

            end;      

readln;
end.                

 

Estou compilando pelo Free Pascal,ele compila normal e roda,lê os valores mas não mostra os resultados,se alguém puder apontar o equívoco ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo, você cometeu um erro que eu tbm cometo basntante hehe

Você iniciou a var cont em 0, ok, depois em baixo você colocou que se o resto da divisão for 0, incrementa +1 ao cont, ok, depois fez um if perguntando de cont era igual a 2, ok...

Tudo está ok, exceto por um detalhe...

Digamos que na primeira execução do for, o cont tenha ficado com 3... Na segunda execução ele continuará com os mesmos 3, e você não quer isso, quer que ele comece a contar do 0 novamente.

Então para resolver, apenas coloque um "cont := 0;" após o if

Testei e funcionou

 

                 if(cont=2) then
                 begin
                                  writeln('A posicao que contem o 
                                   numero primo e:', i);  
                  end; 
                  cont := 0;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ismaeldm...obrigado cara,realmente cometi um vacilo.

 

 

De fato após passar por cada casa o cont ainda estava com o valor anterior e agora ele faz o processo normal.

 

 

 

Muito obrigado cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.