Pascal/Turbo Pascal - Numero dorsal

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 28 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Numero dorsal

Publicado por Norman Duarte (2 intervenciones) el 26/06/2020 00:47:27
Hola gente necesito ayuda con un ejercicio que es para las 9pm horario argentina,el ejercicio dice asi Escribir un programa completo en FreePascal que use las FUNCIONES necesarias
para determinar si un número entero dado es dorsal o no. Se dice que un número es
dorsal si es igual a la suma de los cuadrados de las partes obtenidas al partir el número
por la mitad.
El número ingresado debe tener cuatro dígitos, en caso contrario enviar el mensaje
de error al usuario e ingresar nuevamente.
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
Val: 287
Oro
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Numero dorsal

Publicado por dario (87 intervenciones) el 27/06/2020 05:17:16
Hola, podrias poner un ejemplo de numero dorsal.
Salu2.
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
Val: 112
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Numero dorsal (posible)

Publicado por juanba (40 intervenciones) el 27/06/2020 11:15:15
Hola.
No me queda claro el significado de la expresion "partir el numero por la mitad". Primeramente pensé en dividirlo por 2 pero no puede ser: con números de cuatro digitos (asumiendo que no empiezan por cero) una de las dos mitades debe de ser mayor o igual que 500 y el cuadrado sería mayor que 250000, muy por encima de cualquier numero de 4 digitos.
Otra posible interpretacion es separar las dos cifras de la izquierda (peso más alto) y las dos cifras de la derecha (peso más bajo). Con esta interpretacion, el siguiente programa busca los numeros supuestamente dorsales entre 1000 y 9999 (cuarto digiitos). No es lo que pide el ejercicio, pero se aproxima bastante.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Program Dorsal;
var Numero: word;
 
function EsDorsal(Numero: word): boolean;
var Mitad1, Mitad2: word;
begin
  if (Numero < 1000) or (Numero > 9999) then
  begin
    writeln('ERROR: ', Numero);
    EsDorsal := false;
  end else
  begin
    Mitad1 := Numero div 100;
    Mitad2 := Numero mod 100;
    EsDorsal := Numero = (Mitad1 * Mitad1 + Mitad2 * Mitad2);
  end;
end;
 
begin                    {Buscar los dorsales de 4 digitos}
  for Numero := 1000 to 9999 do
    If EsDorsal(Numero) then
      writeln(Numero, ' es dorsal.');
  readln;
end.

Pero esto es un ejercicio tan trivial que no creo que sea lo que se debe interpretar como numero dorsal. De hecho no se necesita ninguna FUNCION especial.
Y por cierto, hay dos números que cumplen esta condicion: 1233 = (12 * 12) + (33 * 33) y 8833 = (88 * 88) + (33*33).
Buen fin de semana.
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
Val: 3
Ha disminuido su posición en 28 puestos en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

Numero dorsal (posible)

Publicado por Norman (2 intervenciones) el 29/06/2020 03:19:07
Hola,gracias por ayudar, perdon que no puse en un ejemplo pero ahi va un ejemplo
Dado 1233 ➔ 12 * 12 + 33 * 33 = 144 + 1089 = 1233➔ 1233 es dorsal.
Dado 1030 ➔ 10 * 10 + 30 * 30 = 100 + 900 = 1000 ➔ 1030 no es dorsal.
Dado 2011 ➔ 20 * 20 + 11 * 11 = 400 + 121 = 521 ➔ 2011 no es dorsal.
Dado 8833 ➔ 88 * 88 + 33 * 33 = 7744 + 1089 = 8833 ➔ 8833 es
creo que es lo mismo juanba!
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