Ir ao conteúdo
  • Cadastre-se
Augusto Henrique Ferreira

Pascal Writeln no vetor não está funcionando

Recommended Posts

Fala galera, beleza? Então, eu tenho que criar um programa que some números binários, e no geral creio que está dando certo mas agora eu tento compilar e diz que os dados informados no writeln da varivavel vetorial  resp  não são primitivos!(?) Segue o código de até agora:

 

Program Pzim ;
var   bin1,bin2:string[4];
      i,j,vai,expoente1,expoente2,tam1,tam2:integer;
      deci,deci1,deci2:real;
      resp:array[1..5] of string;
Begin
  Writeln ('Soma de binários!');
  Writeln ('Digite o primeiro número binário de quatro dígitos');
  readln (bin1);
  Writeln ('Digite o segundo número binário de quatro dígitos');
  readln (bin2);
   tam1:=length(bin1);
    for i:=tam1 downto 1 do 
     Begin
      If bin1='1' then
       deci1:=deci1+(exp(expoente1*ln(2)));
       expoente1:=expoente1+1;
            End;
        Writeln ('O número binário ',bin1,' é igual a ',deci1:0:0,' decimal');   
     tam2:=length(bin2);
    for i:=tam2 downto 1 do 
     Begin
      If bin2='1' then
       deci2:=deci2+(exp(expoente2*ln(2)));
       expoente2:=expoente2+1;
            End;
        Writeln ('O número binário ',bin2,' é igual a ',deci2:0:0,' decimal'); 
        deci:=deci1+deci2;
      Writeln ('A soma dos números em decimal é igual a ',deci:0:0);
      Writeln;
      
//soma
    vai:=0;
   for i:=tam1 downto 1 do
    Begin
     if (bin1='0') and (bin2='0') and (vai=0) then 
     begin
     Writeln ('Desce 0');
     resp[j]:='0';
     vai:=0;
     end;
     if (bin1='0') and (bin2='1') and (vai=0) then
     begin
     Writeln ('Desce 1');
     resp[j]:='1';
     vai:=0;
     end;
     if (bin1='1') and (bin2='0') and (vai=0) then
     begin
     Writeln ('Desce 1');
     resp[j]:='1';
     vai:=0;
     end;
     if (bin1='1') and (bin2='1') and (vai=0) then
     begin
     Writeln ('Sobe 1');
     resp[j]:='0';
     vai:=1;
     end;
     if (bin1='1') and (bin2='0') and (vai=1) then
     begin 
     Writeln ('Sobe 1');
     resp[j]:='0';
     vai:=1;
     end;
     if (bin1='0') and (bin2='1') and (vai=1) then
     begin 
     Writeln ('Sobe 1');
     resp[j]:='0';
     vai:=1;
     end; 
     if (bin1='1') and (bin2='1') and (vai=1) then
     begin 
     Writeln ('Sobe 1 e vai 1');
     resp[j]:='1';
     vai:=1;
     end;
     End;
     if vai=1 then
     Begin                                               
     Writeln ('Desce 1');
     resp[j]:='1';
     end;
     Writeln (resp);      
      
      Writeln ('Aperte qualquer tecla para sair');
      Readln;
End.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Augusto Henrique Ferreira disse:

mas agora eu tento compilar e diz que os dados informados no writeln da varivavel vetorial  resp  não são primitivos!(?) Segue o código de até agora:

 

 

Você declarou assim:

1 hora atrás, Augusto Henrique Ferreira disse:

      resp:array[1..5] of string;

 

Ou seja, resp é um vetor, e o Pascal não está aceitando imprimir ele diretamente (característica da linguagem). É necessário informa a posição. Se quer imprimir todas, poderia usar um for para percorrer posição por posição.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 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

×