[ Foro de Pascal ]

PASCAL-APRENDIZ-NROAMSTRONG

02-Oct-2022 00:06
Luciano Bechir
3 Respuestas

Hola Buenas, Necesito ayuda con pascal ya que estoy adentrándome en esto de de la programación y entiendo mucho la lógica pero no aprendí bien los conceptos y en mi universidad el examen final es de pascal
https://ibb.co/S0SgxKf
Como pueden ver en la imagen ahí esta la consigna que me dieron y la forma que trate de hacer, se pueden dar cuenta que mi nivel de programación es ultra básico y estoy tratando de aprender y si es rápido mejor, sé que debe haber algún método para que cuente automático cada uno de los dígitos porque lo desconozco ya que no sé del código y no es didáctico tampoco ni hay mucha info en internet al ser tan estricto, si me ayudan y explican un poco nada más sería de gran ayuda desde ya gracias. [:-)][:-)]

voy a estar subiendo más consignas de la guía que me dificulten para ver si recibo una respuesta en algún momento y ver si puedo mejorar mis métodos acá mi gmail por si quieren contactarme.

Luchitobechh@gmail.com

Por si no pueden ver la imagen copio el codigo y la consigna aquí=

-CONSIGNA:
Escriba un programa que permita el ingreso de un número de tres dígitos y Determine si es un número Amstrong (ej. 153, 371). Como el número que se ingresa posee 3 dígitos la suma de cada uno de sus dígitos elevado a 3 debe dar el mismo número.

program AMSTRONNG;
var
Nroprincipal, digito1, digito2, digito3,Resultado:integer;
BEGIN
 writeln ('Ingrese el numero y cada uno de sus digitos');
 read(Nroprincipal,digito1,digito2,digito3);
Resultado:=digito1*digito1*digito1 + digito2*digito2*digito2 + digito3*digito3*digito3*;
IF Resultado = Nroprincipal THEN
Writeln ('es un numero amstrong');
else
Writeln ('no es un numero amstrong');

END.
|


05-Oct-2022 12:47
Nacho Cabanes (+84)

La lógica parece buena, pero ¿seguro que te dan el número y los tres dígitos? ¿No deberías obtener tú los dígitos a partir del número?

Por otra parte, si quieres obligarte a adquirir más soltura con Pascal, en este curso puedes ver los fundamentos:

https://www.youtube.com/playlist?list=PL0bfr51v6JJGVLw3jppSPuEm1Dy2Irj5r
 


14-Oct-2022 00:44
Invitado (Agustin)

Buenas, yo lo pensaria mas general, que sirva para todo numero. te paso como creo yo que debe ser. un programa que reciba un numero de 3 digitos los descomponga e informe si la suma de los cubos de cada digito es igual al numero base. El programa se ejecutara en bucle hasta que ingreses el numero 0 que no se procesa.

Program nroamstrong;
procedure descom (n:integer; var total:integer);
var
 dig:integer;
 nd, aux:integer;
begin
 total:=0;
 while(n<>0) do begin
   aux:=0;
   dig:= n MOD 10;
   nd:=dig;
   aux:=nd*nd*nd;
   total:=total+aux;
   n:=n div 10;
 end;
end;
var
numero, total:integer;
begin
 write('ingrese numero de 3 cifras : '); readln(numero);
 while (numero <>0) do begin
   descom(numero, total);
   if(numero = total) then
     writeln('es numero amstrong')
   else
     writeln('no es numero amstrong');
 write('ingrese numero de 3 cifras : ');readln(numero);
 end;
end.


14-Oct-2022 00:48
Invitado (Agustin)

tu programa aunque esta muy basico lo unico que debes corregirle para que funcione asi como esta es quitarle el * del ultimo digito antes del ; y en la sentencia antes del else quitarle el ; porque no te compila sino.


abrzo






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)