Pascal/Turbo Pascal - cifras...URGENTE

 
Vista:
sin imagen de perfil

cifras...URGENTE

Publicado por daicy (13 intervenciones) el 23/04/2014 15:09:39
cordial saludo, a quien pueda ayudarme...
se trata de hacer un programa que dado un numero de n cifras (n menor 10),permita saber si su ultimo digito es menor que el valor del primer digito.
no se permite utilizar vectores, ni string, por lo tanto no se puede usar length, para saber el tamaño del número, se tendrá que dividir varias veces entre 10, hasta que se obtenga un número menor que 10.

muy agraecida por toda la ayuda que puedan prestarme
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

cifras...URGENTE

Publicado por Diego (98 intervenciones) el 23/04/2014 16:07:51
Buen dia, primero que nada se tiene que saber que tipo de número es con el que se va a trabajar ya que será un tanto diferente en enteros y reales.
en enteros:
--Primero ingresar el número.
--Luego en una variable axuliar copiar el número que se ingreso e iterar hasta que el cociente de la división sea menor que 10 (esté sera del rango 0..9 {osea una cifra}) esto te dará el primer dígito.
-Después preguntar si el primer digito(variable auxiliar) es mayor o igual al resto de el número original dividido 10

Creo que lo más probable es que trabajen con enteros debido a lo mencionado al final, de sea con reales, te lo quedo debiendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cifras...URGENTE

Publicado por David (224 intervenciones) el 23/04/2014 16:32:07
Te propongo la siguiente solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Uses CRT;
 
Var
  INICIO, FIN, N : LongInt; {INICIO y FIN podrían ser tipo byte o incluso shortint si utilizas números negativos}
 
BEGIN
  inicio:=0;
  fin:=0;
  writeln('N: ');
  readln(N);
  fin:=n mod 10;
 
  while n>=10 do
    n:=n div 10;
  inicio:=n;
  if fin<inicio then
    writeln('El d¡gito final es menor que el primero');
  readln;
END.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cifras...URGENTE

Publicado por ramon (2158 intervenciones) el 24/04/2014 14:34:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{Mira esto te ayudara}
 
program digitos;
 uses
    crt;
 
   var
     unidad, decena : longint;
     resul, p, nume : longint;
 
 
   begin
       clrscr;
       unidad := 0;
       decena := 0;
       write('  Entre Numero : ');
       readln(nume);
       unidad := nume mod 10;
       p := 10;
       resul := 1;
      while resul <> 0 do
      begin
       decena := resul;
       resul := (nume div p) mod 10;
       p := p * 10;
      end;
       writeln('  Digitos Vistos desde Derecha a Izquierda ');
       writeln;
       if unidad > decena then
       writeln('  ultimo digito es menor que el valor del primer digito')
    else
       writeln('  primer digito es menor que el valor del ultimo digito');
       readkey;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

cifras...URGENTE

Publicado por daicy (13 intervenciones) el 27/04/2014 15:48:17
hola ramon , perdona es que ejecutando tu codigo que agradezco inmensamente de ante mano, noto que no cumple lo pedido, fijate en este ejemplo:

si el numero es:
732657
el resultado que da es:
el primer digito es menor que el valor del ultimo digito.

lo cual como veras no es correcto.

ahora otra cosa por que haces la salvedad que los digitos son vistos desde derecha a izquierda? siendo que lo correcto seria ver el numero de izquierda a derecha donde el primer digito seria el 7 el segundo digito el 3, luego el 2 etc, ??' gracias por responder a mis inquietudes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cifras...URGENTE

Publicado por ramon (2158 intervenciones) el 28/04/2014 11:13:05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
{Mira tienes que poner esto}
 
program digitos;
 uses
    crt;
 
   var
     unidad, decena : longint;
     resul, p, nume : longint;
 
 
   begin
       clrscr;
       unidad := 0;
       decena := 0;
       write('  Entre Numero : ');
       readln(nume);
       unidad := nume mod 10;
       p := 10;
       resul := 1;
      while resul <> 0 do
      begin
       decena := resul;
       resul := (nume div p) mod 10;
       p := p * 10;
      end;
       writeln('  Digitos Vistos desde Derecha a Izquierda ');
       writeln;
       if unidad = decena then
        writeln('  ultimo digito es igual que el valor del primer digito')
  else
       if unidad > decena then
       writeln('  ultimo digito es menor que el valor del primer digito')
    else
       writeln('  primer digito es menor que el valor del ultimo digito');
 
       readkey;
   end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar