Ir ao conteúdo

Posts recomendados

Postado
Program Pzim ;
var user,digitado:String;
    tentativas:Integer;
  Begin
    user:='Thiago';
    tentativas:=0;
    Writeln('Usuario:');
    readln(digitado);

    while digitado <> user and tentativas <3 do
    Writeln ('Digite o Usuario:');
    tentativas := tentativas + 1 ;
    readln(digitado);
   
    If digitado=user then
    Writeln('Usuario Cadastrado!')
    else
    Writeln('Excesso Excedidas!");
  End.

 

  • Amei 1
Postado

@T.M.J    você não explicou e nem disse o que quer , mas testei seu código e ele está apresentando erro sintático na última linha , isso por que você colocou aspas dupla no lugar de aspas simples ,  e no while precisa de parênteses quando tem duas comparações , então seu código modificado ficaria assim  :

Program Pzim ;
uses CRT;
var
  user,digitado      : string ;
  tentativas, j,flag : integer;
begin
  user := 'Thiago';
  tentativas := 0;
  while (digitado <> user) and (tentativas < 3) do
  begin
    clrscr;
    write('Digite o Usuario ');
    tentativas := tentativas + 1;
    readln(digitado);
    flag:= 0;
    for j:=0 to length(digitado) do
      if (upcase(digitado[j]) <> upcase(user[j])) then flag := 1;
    if flag=0 then digitado := user;
  end;
  writeln;
  if digitado = user then 
  begin
    textcolor(yellow);
    writeln('Usuario => ',digitado,' <= Cadastrado . . . !');
  end
  else
  begin
    textcolor(white);
    writeln('Excesso Excedidas!');
  end;
  readkey;
end.

 

  • Curtir 2
  • Membro VIP
Postado

Olá.

 

De fato! Sem explicar o que ocorre e/ou quais as dúvidas fica um pouco complicado :)

 

 

Vou tentar complementar.

 

1#

Para contextualizar, segue o código original REINDENTADO e COM CORREÇÕES DE SINTAXE, ou seja, apenas "arrumei" a estrutura visual (indentação) e fiz o código ficar compilável (sintaxe).

program Pzim;
var
  user,digitado :string;
  tentativas    :integer;
begin
user:='Thiago';
tentativas:=0;
writeln('Usuario:');
readln(digitado);
{while digitado <> user and tentativas <3 do} //faltou os "()"
while (digitado <> user) and (tentativas <3) do
  writeln ('Digite o Usuario:');
tentativas := tentativas + 1 ;
readln(digitado);
if digitado=user then
  writeln('Usuario Cadastrado!')
else
  //writeln('Excesso Excedidas!"); //é ' em vez de "
  writeln('Excesso Excedidas!');
end.

 

 

 

2#

Analisando visualmente (já que está "devidamente" indentado), dá para ver que está faltando um begin/end no while, pois o mesmo ele só se "vincula" a uma "coisa" (ou a um comando, ou a um begin/end), ou seja, se por acaso a condição do na expressão que está no while resultar em true (verdadeiro), vai começar a repetir, certo?... daí, como dentro do laço não está alterando as variáveis da condição, o laço de vai ficar repetindo indeterminadamente. Independente da lógica do problema em si, já dá para ver que tem algo errado no código...

 

 

 

3#

Pronto! apenas corrigindo essa "falha" da falta do begin/end, o código ficaria assim:

program Pzim;
var
  user,digitado :string;
  tentativas    :integer;
begin
user:='Thiago';
tentativas:=0;
writeln('Usuario:');
readln(digitado);
while (digitado <> user) and (tentativas <3) do
  begin //como o while está "amarrando" mais de uma linha, precisa de begin/end
  writeln ('Digite o Usuario: ');
  tentativas := tentativas + 1 ;
  readln(digitado);
  end;
if digitado=user then
  writeln('Usuario Cadastrado!')
else
  writeln('Excesso Excedidas!');
end.

 

 

4#

Outros pontos que podem ser revistos, por exemplo:

program Pzim;
var
  user,digitado :string;
  tentativas    :integer;
begin
user:='Thiago';
tentativas:=0;
{writeln('Usuario:');  //deixar a leitura apenas dentro do laço
readln(digitado);}
while (digitado <> user) and (tentativas < 3) do
  begin
  tentativas:=tentativas+1;
  {writeln('Digite o Usuario: ');} //tirar o "ln" para não descer a linha
  write  ('Digite o Usuario: ');
  readln(digitado);
  end;
writeln;
if digitado=user then
  writeln('Usuario Cadastrado!')
else
  {writeln('Excesso Excedidas!');}
  writeln('Excesso de tentativas!');
writeln;
write  ('Pressione qualquer tecla para continuar');
ReadKey;
end.

 

Esse mesmo código resumido:

program Pzim;
var
  user,digitado :string;
  tentativas    :integer;
begin
user:='Thiago';
tentativas:=0;
while (digitado <> user) and (tentativas < 3) do
  begin
  tentativas:=tentativas+1;
  write  ('Digite o Usuario: '); readln(digitado);
  end;
writeln;
if digitado=user then
  writeln('Usuario Cadastrado!')
else
  writeln('Excesso de tentativas!');
writeln;
write  ('Pressione qualquer tecla para continuar'); ReadKey;
end.

 

Um outro recurso que pode ficar interessante seria:

while (digitado <> user) and (tentativas < 3) do
  begin
  ClrScr; //apagar a linha a cada loop
  tentativas:=tentativas+1;
  write  ('Digite o Usuario: '); readln(digitado);
  end;

 

Por ai vai...

 

 

***

 

Outros pontos referente ao problema vão depender do que você precisa ou o enunciado do problema exige... em fim...

 

Dúvidas, críticas, sugestões...?

 

 

No aguardo.

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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!