Al parecer como no existe ningun tema... que se especifique en pascal, y como yo he tenido muchos problemas con el... entonces decidi abrir este tema...porque primero que nada me a estado gustando programar en pascal y quiero aprender mas, y por lo mismo hice esto... entonces si alguien tiene problemas entre todos (me incluyo yo) lo solucionaremos.
Pero am. por mientras quiero ser el primero :silbar: ya que ya abri muchos temas sobre esto entonces ya no abrire mas y pondre mis problemas aqui :(
espero que me puedan ayudar. :(...
procedure EstadoE18;
var
c : char;
begin
{$ifdef DEBUG}
writeln(stderr,'Estado E18');
{$endif}
Avanzar;
c := Leer;
{como pongo el caracter '}
if c in '''' then //Mi problema esta aqui
begin
S := S + c;
Avanzar;
c := Leer;
EstadoT19;
end;
En parte de mi codigo de un automata que ando haciendo... lo que quiero esque en el momento en que me lea el caracter ' , me envie a un estado T19... pero no me lo leo porque sabemos que ese caracter sirve para que sea referencia a un texto.
Si yo lo pongo:
if c in ''' then (me pone en rojo igual el then)
if c in '38' then (haciendo referencia al ASCII me sale error)
como podria solucionarlo :S ¿? :(
El operador in se utiliza para trabajar con conjuntos de datos, en tu caso, una simple condición te valdría. El caracter ' es especial en Pascal así que vas a tener que hacer referencia a él mediante su número ascii.
Pienso que algo como esto, te debería valer:
If c = #38 then
begin
end;
Saludos.
function CientoFloat(s:string): real;
var
v: real;
i: integer;
d: integer;
Num1: integer;
c: integer;
Extra: integer;
begin
v:=0; d:=0; c:=length(s); Extra:=0;
while (c<=(lenght(s)+1)) do
begin
for i:=1 to length (s) do
begin
if s[i] in ['0'..'9','-'] then
d:= ord(s[i])-48;
Num1:=Num1+d;
end;
v:=exp(Num1*ln(Extra));
Extra:=Num1;
c:=c+1;
end;
CientoFloat := v;
end;
(lo modifique jeje vi uno de mis errores :S)
Aqui tengo el codigo de mi 13e-4 para poder hacer esta funcion lo que hice fue dividir en dos mi cadena... pero me sale error se supone que cuando encuentre los 2 numeros tanto el de la izquierda como el de la derecha deberia de funcionar no ¿? :/
Uses math;
Procedure dofrexp(Const X : extended);
var man : extended;
exp: longint;
begin
man:=0;
exp:=0;
frexp(x,man,exp);
write(x,' has ');
Writeln('mantissa ',man,' and exponent ',exp);
end;
begin
// dofrexp(1.00);
dofrexp(1.02e-1);
dofrexp(1.03e-2);
dofrexp(1.02e1);
dofrexp(1.03e2);
end.
Disculpen... como utilizaria la matiza :S esque no le entiendo a esta matiza :/