Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - juanqla

#1
Ejercicios / Re: Contar dígitos con Pascal
15 Julio 2009, 20:52 PM
Hola, muchas gracias por responder, hoy me he percatado de que hay una forma bastante más sencilla que la anterior de hacerlo:

Código (pascal) [Seleccionar]
program cuentadigitos;
        var
           x,c,aux:integer;
        begin
             repeat
                   write ('Nuevo numero: ');
                   read(x);
                   aux:=1;
                   c:=0;
                   repeat
                         c:=c+1;
                         aux:=aux*10
                   until abs(x)<aux;
                   writeln ('El numero ',x,' esta formado por ',c,' digitos');
             until x=0
        end.
 
Con lo que "x" es entero de principio a fin ;D

Ahora tengo problemas con otros dos:

CitarDado un número entero "x", calcular la suma "s" de todos los dígitos que lo forman. Ej: si x=12, entonces s=1+2=3.
Citar
Determinar si un dígito "d" está presente en un entero "x". Ej: el dígito 5 está presente en el entero 345; el dígito 3 no está presente en el entero -122.

El primero lo estoy terminando, pero es exageradamente largo y también tiene el problema de que el "entero x" resulta siendo real  :-\. Respecto al segundo, tengo la sospecha de que me va a quedar parecido al primero. Así que si alguien tiene alguna idea de como hacerlos, me ayudaría mucho que me orientaran, obviamente no diciéndome exactamente como hacerlo sino dándome alguna pista, qué funciones podría usar...

Saludos y muchas gracias!!!
#2
Ejercicios / Contar dígitos con Pascal
13 Julio 2009, 00:56 AM
Hola gente, tengo un problema con un ejercicio en pascal: estoy aprendiendo -hace un par de semanas, así que soy muy n00b- a programar, he conseguido unos ejercicios muy básicos por ahí, y los hice con bastante facilidad, hasta que me topé con uno que pedía lo siguiente:

Citar

Dado un número entero "x", contar la cantidad "c" de dígitos que lo forman. Ej: si c=343, entonces c=3; si x=-20, entonces c=2.


Lo que he hecho es lo siguiente:

Código (pascal) [Seleccionar]
program cuentadigitos;
       var
          c,d: integer;
          x: real;
       begin
            writeln ('Para terminar ingrese "0"');
            repeat
                  c:=0;
                  d:=0;
                  readln (x);
                  x:=x*10;
                  repeat
                        c:=c+1;
                        x:=x / 10
                  until abs (x)<10;
                  repeat
                        d:=d+1;
                        x:=x*10
                  until d=c;
                  writeln ('El numero ',x,' esta formado por ',c,' digitos');
            until x=0
       end.


Pero tiene algunos defectos, primero, que "x" es real, en lugar de entero, y no es lo que pide el ejercicio, además la forma en que se muestran los reales en la consola es muy incómoda (si alguien sabe como quitar todos esos ceros le agradecería que me lo dijera :P); segundo, que no encuentro una forma de cerrar el programa que no sea introduciendo un número (en este caso, "0"), me interesaría por ejemplo que el programa terminase cuando se introduce "end". Y también tengo la sospecha de que hay formas más sencillas que ésta para contar dígitos...
Si alguien sabe como solucionar alguno de estos problemas, me le voy a estar muy agradecido.

Saludetes.

PD.: Los estoy viendo! no se rían de mi código, les avisé que soy muy n00b xD