Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

Vazio para integer: Como testar?

Recommended Posts

Olá pessoal.

 

Estou montando um codigo aqui em pascal´onde o usuario, através do teclado, digita dois numeros inteiros.

 

Preciso saber se esses numeros foram de fato digitados ou se o usuario bateu enter sem digitar.

 

Como fazer essa validaçao com inteiros?

 

if((coordenada_x='') or (coordenada_y='')) then
begin~
  writeln('Você não digitou a coordenada corretamente!');
  break;
end;

 

Não esta passadno assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece ser uma coisa simples... mas nem tanto...

Eu fiz um exemplo aqui que funcionou tudo certinho, mas na boa, acho que é melhor você deixar com esse negócio normal mesmo shuashuahsu

Aí se por acaso você quiser utilizar, é só adaptar.

 

program exemplo;
uses crt, sysutils;
var
 x: integer;
 strx: string;
 fim: boolean;
 tecla: char;
begin
 clrscr;
 x := 0;
 fim := false;
 writeln('Digite um numero...');
 while fim=false do
 begin
   tecla := readkey;
   if tecla=#13 then
   begin
     writeln('O numero deve conter ao menos um algarismo...');
   end else begin
     while tecla<>#13 do
     begin
       if tecla=#8 then
       begin
         strx := copy(strx, 1, length(strx)-1);
         write(tecla);
         write(' ');
       end else begin
         strx := strx + tecla;
       end;
       write(tecla);
       tecla := readkey;
     end;
     if length(strx)>0 then
     begin
       fim := true;
       writeln;
     end else begin
       writeln('O numero deve conter ao menos um algarismo...');
     end;
   end;
 end;
 x := StrToInt(strx);
 writeln('O numero digitado foi: ', x);
 readln;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o que eu preciso não é bem isso.

 

Como faço para validar se um campo recebeu um integer?

 

Tipo:

 

if (variavel não recebeu valor inteiro) then

 

pare o codigo

 

Outra dificuldade que estou tendo é a seguinte:

 

Tenho 4 variaveis:

 

var1:= 5;

var2:= 2;

var3:= 8;

var4:= 0;

 

Quero saber qual tem valor maior e qual é esse valor. Como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você sabe utilizar array?

Acho que o melhor a se fazer para ambas as coisas que você quer é utilizar array.

Abaixo vou te passar outro programa que faz o seguinte...

Temos 2 array, um para integer, e outro para boolean, dentro de um for iremos fazer as leituras do array para integer, e caso o usuario não queira informar um valor, então o valor do array para boolean fica "false", se não fica "true".

E para pegar o numero maior utilizaremos um outro for, que irá repetir 3 vezes (tamanho do array -1), onde ele irá testar se o numero 2 é maior que o 1, se o numero 3 é maior que o 2 e se o numero 4 é maior que o 3.

E depois temos mais um for para exibir os dados ao usuario.

Caso tenha alguma duvida sobre alguma linha ou coisa parecida é só perguntar :thumbsup:

 

program exemplo;
uses crt;
var
 n: array [1..4] of integer;
 altera: array [1..4] of boolean;
 maior: integer;
 declaradas: integer;
 cont: byte; //Variavel usada apenas para configura‡äes do for.
begin
 clrscr;
 n[1] := 0;
 n[2] := 0;
 n[3] := 0;
 n[4] := 0;
 maior := 0;
 declaradas := 0;
 //Abaixo temos as leituras das variaveis
 for cont:=1 to 4 do
 begin
   writeln('Deseja informar o valor do ', cont, 'ø numero? (tecle ENTER para SIM ou outra para NAO)');
   if readkey=#13 then
   begin
     write('Digite o numero: ');
     readln(n[cont]);
     altera[cont] := true;
     declaradas := declaradas+1;
   end else begin
     altera[cont] := false;
   end;
   writeln;  //Linha em branco
 end;
 //Abaixo temos a defini‡Æo da maior
 if declaradas>0 then
 begin
   for cont:=1 to 3 do
   begin
     if n[cont+1] > n[cont] then maior := cont+1;
     if n[cont] > n[cont+1] then maior := cont;
   end;
 end;
 //Abaixo fica as exibi‡äes...
 writeln('Foram declaradas ', declaradas, ' variaveis...');
 for cont:=1 to 4 do
 begin
   if altera[cont]=true then
   begin
     writeln('O numero ', cont, ' foi declarado');
   end else begin
     writeln('O numero ', cont, ' nao foi declarado');
   end;
 end;
 writeln;
 if maior>0 then
 begin
   writeln('O numero de maior valor ‚ o ', maior, ', que contem ', n[maior]);
 end else begin
   writeln('Nao foi possivel calcular o maior valor pois nenhum foi declarado')
 end;
 readln;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da uma olhada.

 

Consegui fazer do jeito abaixo:

Program Questao4 ;
var tecla:char;
var coordenada_y, coordenada_x, QuantasVoltas, i, quad_1, quad_2, quad_3, quad_4, quadrante, maior:integer;
coordenadas: array[0..100,1..2] of integer;
Begin
  QuantasVoltas:=100;
  quad_1:=0;
  quad_2:=0;
  quad_3:=0;
  quad_4:=0;

  for i:=0 to QuantasVoltas do
  begin

    writeln('Entre com a coordenadas X do ',i+1,'o par');
    read (coordenada_x);
    if coordenada_x=0 then
    begin
      writeln('Você nao digitou a coordenada valida');
     break;
    end;     

    writeln('Entre com a coordenadas Y do ',i+1,'o par');
    read (coordenada_y);         
    if coordenada_y=0 then
    begin
      writeln('Você nao digitou a coordenada valida');
     break;
    end;     

coordenadas[i][1]:=coordenada_x;
    coordenadas[i][2]:=coordenada_y;    


if ((coordenadas[i][1] >0)and(coordenadas[i][2] >0)) then
begin	
  writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no primeiro quadrante!');
  quad_1:=quad_1+1;
end;
if ((coordenadas[i][1]< 0)and(coordenadas[i][2] >0)) then
begin	
  writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no segundo quadrante!');
  quad_2:=quad_2+1;
end;
if ((coordenadas[i][1] < 0)and(coordenadas[i][2] < 0)) then
begin	
  writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no terceiro quadrante!');
  quad_3:=quad_3+1;
end;
if ((coordenadas[i][1] >0)and(coordenadas[i][2] <0)) then
begin	
  writeln('O par de coordenadas cartezianas X,Y (',coordenadas[i][1],',',coordenadas[i][2],') esta no quarto quadrante!');
  quad_4:=quad_1+4;
end;


    if (quad_1 >= quad_2) and (quad_1 >= quad_3) and (quad_1 >= quad_4) then
    begin
     maior := quad_1;
     quadrante:=1;
    end;
    if (quad_2 >= quad_1) and (quad_2 >= quad_3) and (quad_2 >= quad_4) then
    begin
     maior := quad_2;
     quadrante:=2;
    end;
if (quad_3 >= quad_1) and (quad_3 >= quad_2) and (quad_3 >= quad_4) then
begin
     maior := quad_3;
     quadrante:=3;
    end;
if (quad_4 >= quad_1) and (quad_4 >= quad_2) and (quad_4 >= quad_3) then
begin
     maior := quad_4;
     quadrante:=4;
end;
  end;

  writeln('O quadrante que caiu o maior numero de pontos e: ',quadrante);
  writeln('E a quantidade de pontos e: ',maior);
  writeln(' ');


End.

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta funcionando ^^

só não entendi porque você quis salvar todas as cordenadas, em vez de fazer um array com TODAS elas, porque só não faz 2 integers? um com a cordenada X e outro com o Y, ja seria o suficiente pro seu programa rodar.

E a variavel tecla não está sendo usada hehe.

 

Cara, você tbm está aprendendo pascal né? Eu to fazendo um curso de Delphi e meu semestre passado foi todo de pascal xD

Me add no msn aí: ismael.dullius.machado@hotmail.com

Aí a gente vai trocando umas idéias e pah xD

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.