Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2010
cuteprincess cuteprincess is offline
Registrado
 
Registrado: mar 2010
Posts: 2
Poder: 0
cuteprincess Va por buen camino
programa en lazarus

hola estoi aprendiendo este lenguaje y necesito hacer un programa que convierta de decimal a binario este es mi codigo empezado solo que no c declarar un arreglo y como recorrerlo

a := decimal.Text;
if(a > 255)then
a := b;
else
Application.MessageBox(introduce un numero menor a 255);
Responder Con Cita
  #2  
Antiguo 04-03-2010
Avatar de arturom
arturom arturom is offline
Miembro
 
Registrado: dic 2003
Ubicación: Alicante
Posts: 91
Poder: 21
arturom Va por buen camino
Hola,
suponiendo que la variable a sea un entero debes usar esta función para convertir el número a entero:

Código Delphi [-]
a := StrToInt( decimal.Text );

A continuación usa esta para pasar de entero a binario:
Código Delphi [-]
Function IntToBin ( entero: LongInt; Digitos: integer=8): string;
begin
result := StringOfChar ( '0', Digits ) ;
while entero > 0 do begin
if ( entero and 1 ) = 1 then
result [ digitos ] := '1';
dec ( digitos ) ;
entero := entero shr 1;
end;
end;

Esta función está sacada de aquí
__________________
"No guardes nunca en la cabeza aquello que te quepa en un bolsillo."

Albert Einstein

Última edición por arturom fecha: 04-03-2010 a las 08:52:07.
Responder Con Cita
  #3  
Antiguo 04-03-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por cuteprincess Ver Mensaje
(... ) no c declarar un arreglo y como recorrerlo

Hola cuteprincess.

Además de lo comentado por arturom, te voy a explicar cómo crear y recorrer una lista (array).

El siguiente código crea una lista con 10 elementos, les asigna un número a cada uno y después los escribe en pantalla. Para probarlo, debes decirle a Delphi que es un programa de consola ("console project"):

Código Delphi [-]
PROGRAM PruebaLista;
{$APPTYPE CONSOLE}

VAR
(* Aquí declaramos la lista.  Cuenta desde 1 hasta 10. *)
   ListaNumeros: ARRAY [1..10] OF INTEGER;
(* Este es un contador para el bucle. *)
   Ndx: INTEGER;

BEGIN
(* Primero, preguntamos diez números. *)
   FOR Ndx := 1 TO 10 DO
   BEGIN
      Write ('Introduce el número ', Ndx, ': ');
      ReadLn (ListaNumeros[Ndx]);
   END;
(* Ahora los escribe. *)
   Write ('Los números introducidos son: ');
(* Primero, del uno al ocho... *)
   FOR Ndx := 1 TO 8 DO
      Write (ListaNumeros[Ndx], ', ');
(* Y ahora el nueve y el diez. *)
   WriteLn (ListaNumeros[9], ' y ', ListaNumeros[10]);
(* Finalmente esperamos a que el usuario pulse una tecla. *)
   WriteLn ('Pulse cualquier tecla para terminar.');
   ReadLn;
END.

Y ya sabes, si tienes alguna duda, busca o pregunta.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 04-03-2010 a las 09:15:38.
Responder Con Cita
  #4  
Antiguo 05-03-2010
cuteprincess cuteprincess is offline
Registrado
 
Registrado: mar 2010
Posts: 2
Poder: 0
cuteprincess Va por buen camino
conversion de decimal a binario

hola antes k nada muxas grax x ayudarm y tomar su tiempo, m surgio otra duda este es mi programa pero m marca un error en en la division x k m dice k son incompatibles los tipos, tambien no c si este bien en como concatene el vector, ojala puedan ayudarm grax

procedure TForm2.Button1Click(Sender: TObject);
var
a:integer;
b:integer;
x:integer;
d:integer;
r :array [1..8] of Integer;
begin
a:= StrToInt( decimal.Text);
if(a < 255)then
for x:= 1 TO 8 DO
begin
b := a;
d := a / 2;
r[x]:= b % 2;
a:= d;
end
ShowMessage('EL NUMERO BINARIO ES: '&r[8]&r[7]&r[6]&r[5]&r[4]&r[3]&r[2]&r[1]);
else
ShowMessage('EL NUMERO ES MAYOR A 254');
end;
Responder Con Cita
  #5  
Antiguo 08-03-2010
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Eso es porque el resultado de una división siempre es un número fraccionario, y no puedes asignar un número fraccionario a una variable entera ya que se pierde precisión (exactitud en el resultado). Por esto se dice que Pascal es "estricto".

Hay dos posibles soluciones:
  1. Redondear el resultado usando las funciones TRUNC, CEIL, etc.
  2. Utilizar la división de enteros (operador DIV), que divide dos enteros y devuelve únicamente la parte entera.

Utilizar una u otra depende de qué tipo de resultado necesitas. El operador DIV es mucho más rápido pero menos preciso que dividir con el operador "normal" (/) y luego redondear.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ejecutar programa externo con Lazarus abelaquino Lazarus, FreePascal, Kylix, etc. 1 12-05-2008 09:37:35
Ejecutar mi programa hecho en Lazarus sobre Linux mr_pascale Lazarus, FreePascal, Kylix, etc. 9 11-08-2007 18:54:25
Nuevo programa "made in Lazarus" jam Lazarus, FreePascal, Kylix, etc. 3 26-04-2007 22:46:53
programa para ver en que direccion del registro de windows escribe un programa? JuanErasmo Varios 1 09-11-2006 20:42:05
[Lazarus] GTK+-devel en SUSE. problema instalar lazarus de esa libreria. sakuragi Lazarus, FreePascal, Kylix, etc. 3 28-09-2006 03:31:09


La franja horaria es GMT +2. Ahora son las 10:20:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi