Pascal/Turbo Pascal - mini programita

 
Vista:

mini programita

Publicado por acasru (3 intervenciones) el 19/11/2005 12:25:14
Como puedo completar este programa solo con expresiones hechas con operaciones para que asigne a la variable centena de tipo digito, la centena correspondiente al número entero almacenado en la variable n. Por ejemplo si n vale 21756, entonces centena debe tomar el valor 7. ( con las condiciones q me dan, no se pude cambiar lo qya viene dado):

typpe digito=0..9;
var centena:digito; n:word;
begin
write('Introduce un valor para n: ');
readln(n);

................................lo que falta.........................

writeln('El valor de la centena es: ',centena)
end.

gracias por vuestra ayuda
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

RE:mini programita

Publicado por Roberto Garcia (56 intervenciones) el 20/11/2005 14:52:57
Esto se puede resolver muy facil usando cadenas de caracteres, pero como no usas cadenas de caracteres, entonces no queda mas remedio que convertir el valor numerico a cadena.

eso lo haces con STR(VarNum, VarString);

le pasas como parametro la variable tipo numerico que quieras convertir a string y la variable tipo string donde se guardara el valor por ejemplo

STR(n,numero);

Las cadenas de caracteres funcionan como un arreglo de caracteres, o sea que se puede acceder a cada uno de los caracteres indicando su posision dentro de la cadena.

Si siempre te dan numeros con una longitud fija, solo escoge el numero que le corresponderia a la centena.

Por ejemplo si la longitud de la cadena siempre es 4 como 1111 o 4444 o 1234 entonces el caracter que indica la centena es el caracter que esta en la posicion numero 2 (de izquierda a derecha), entonces solo harias

centena := numero[2];

pero como centena es de tipo numerico eso causaria proble,mas, lo que hay que hacer es convertirlo a numero con el procedimiento Val(Cadena,VarNum,Error)

Los parametros son, Cadena, la cadena que se quiere convertir a numerico en este caso numero[2], VarNum, la variable de tipo numerico que guardara el valor convertido, es decir Centenea, y error que es de tipoo numerico donde se guradaria el numero de error que se presento en caso de que no se hubiera podido converit la cadena en numero.

y ya puedes mostrar la centenas, pero si no hay ningun incoveniente te recomiendo que las variables sean dee tipo String, asi te ahorras lo de estar convirtiendo los valores.

Haaa, pero si los numeros son de longitud varibale primero tendrias que verificar que hayas centenas, despoues de haber convertido el numero a cadena harias algo como.

if length(numero) < 3 then (error no hay centenas) else
calculas la posicion de la centena con algo como posCent:=length(numero)-3+1
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

RE:mini programita

Publicado por VoidPointer (51 intervenciones) el 20/11/2005 21:32:34
Se puede hacer con operaciones matematicas tampoco es ciencia de cohetes :-),
una idea es ir dividiendo de la sig forma y sacar la parte entera:
n=21756
n=n-(INT(n / 10000))*10000; /* entonces n=1756 */
n=n-(INT(n /1000))*1000; /* entonces n=756 */

El proximo es el que buscas entonces ese numero es
INT (n/100) el cual es 7

de un numero byte(8 bites) basta empesar dividiendo por 100 e ir bajando este hasta la unidad que uno busca.

Saludos y espero que les sea util la idea
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