ejercicio de pascal

Iniciado por SXF, 5 Noviembre 2010, 15:02 PM

0 Miembros y 1 Visitante están viendo este tema.

SXF

buenas queira saber como resolver este ejecicio:

Escribir un algoritmo que dado un número de bytes obtenga una magnitud equivalente expresada en Mbytes,Kbytes,y bytes. Por ejemplo , dado el número26871979 el resultado sería 25,642,171.

criskapunk


SXF

si pero lo que no entiendo es que son los 26871979 son bytes ?¿ por que si son bytes solo tendria que dividir por 1024 una vez para obtener los klbytes no?¿

criskapunk

Al parecer si. Igualmente no entiendo por que el resultado es 25,642,171 :-\

Si, dividiendo una vez por 1024 te da los Kb, dividiendolo dos veces te da Mb, etc...


SXF

#4
gracias men ya se la respuesta...la cosa esta en que el problema no consiste en pasar de una unidad a otra si no en descomponerme undeterminado valor.

26871979/1024*1024 =25 mb y sobra 657579 bytes estos se dividen entre 1024 y nos da 642 kbytes y nos sobra 171 bytes.
En lenguaje de programacion en pascal seria (Aunque nose  por que no me compila, no veo el error xdd alguien me podria ayudar¡¡)

Código (pascal) [Seleccionar]

PROGRAM CALCULO_DE_BYTES,KBTES,MB
var
mb:integer;
kb:integer;
b:integer;
n:real;
tk:integer;
begin
writeln('ESCRIBE UN VALOR A DESCOMPONER: ');
readln(n);
mb:=n DIV (1024*1024);
tk:=n MOD (1024*1024);
kb:=tk DIV 1024;
b:= tk MOD  1024;

writeln('La descomposición es ', mb, kb, b);
readln('');
end.

 

criskapunk

Código (pascal,13,14) [Seleccionar]
PROGRAM CALCULO_DE_BYTES_KBTES_MB;

var
mb:LongInt;
kb:LongInt;
b:LongInt;
n:LongInt;
tk:LongInt;

begin
WriteLn('ESCRIBE UN VALOR A DESCOMPONER: ');
ReadLn(n);
mb:=n DIV 2048;
tk:=n MOD 2048;
kb:=tk DIV 1024;
b:= tk MOD 1024;

(* Me quedaron demasiadas lineas. Me daba error al intentar concatenar todo xD *)

WriteLn('La descomposicion es: ');
WriteLn(mb);
WriteLn('Mb');
WriteLn(kb);
WriteLn('Kb');
WriteLn(b);
WriteLn('Bytes');
ReadLn();
end.


Tuve que cambiar los tipos de las variables, quitar las comillas del ultimo ReadLn y cambiar los valores de las primeras divisiones (Para obtener los Mb hay que dividir dos veces por 1024, es decir 2*1024 = 2048. En el tuyo divides por 1048576 :P).

Un saludo ;)


SXF

MUchas gracias men , pero no es  1024x2 sino 1024x1024 recuerda para pasar de una unidad a otra va de potencia en potencia de 3... :P jeje gracias por ayuda men.


Un saludo.

criskapunk

No no, para convertir de bytes a mb tenes que dividir por 2048, o dos veces por 1024.

Un saludo ;)

SXF

NO men lo que pasa es que:

Supongamos 50000; 50000/2*1024 NO ES = A 50000/1024/1024;

Un saludo
;)

criskapunk

Tenes razon, error mio :xD jaja

Un saludo ;)