[ Foro de Pascal ]
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.
|
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
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.
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.)