Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: SXF en 5 Noviembre 2010, 15:02 pm



Título: ejercicio de pascal
Publicado por: SXF en 5 Noviembre 2010, 15:02 pm
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.


Título: Re: ejercicio de pascal
Publicado por: criskapunk en 5 Noviembre 2010, 15:06 pm
Dividir por 1024.

Un saludo ;)


Título: Re: ejercicio de pascal
Publicado por: SXF en 5 Noviembre 2010, 15:11 pm
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?¿


Título: Re: ejercicio de pascal
Publicado por: criskapunk en 5 Noviembre 2010, 15:15 pm
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...



Título: Re: ejercicio de pascal
Publicado por: SXF en 5 Noviembre 2010, 15:52 pm
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
  1. PROGRAM CALCULO_DE_BYTES,KBTES,MB
  2. var
  3. mb:integer;
  4. kb:integer;
  5. b:integer;
  6. n:real;
  7. tk:integer;
  8. begin
  9. writeln('ESCRIBE UN VALOR A DESCOMPONER: ');
  10. readln(n);
  11. mb:=n DIV (1024*1024);
  12. tk:=n MOD (1024*1024);
  13. kb:=tk DIV 1024;
  14. b:= tk MOD  1024;
  15.  
  16. writeln('La descomposición es ', mb, kb, b);
  17. readln('');
  18. end.
  19.  
  20.  
  21.  


Título: Re: ejercicio de pascal
Publicado por: criskapunk en 5 Noviembre 2010, 18:15 pm
Código
  1. PROGRAM CALCULO_DE_BYTES_KBTES_MB;
  2.  
  3. var
  4. mb:LongInt;
  5. kb:LongInt;
  6. b:LongInt;
  7. n:LongInt;
  8. tk:LongInt;
  9.  
  10. begin
  11. WriteLn('ESCRIBE UN VALOR A DESCOMPONER: ');
  12. ReadLn(n);
  13. mb:=n DIV 2048;
  14. tk:=n MOD 2048;
  15. kb:=tk DIV 1024;
  16. b:= tk MOD 1024;
  17.  
  18. (* Me quedaron demasiadas lineas. Me daba error al intentar concatenar todo xD *)
  19.  
  20. WriteLn('La descomposicion es: ');
  21. WriteLn(mb);
  22. WriteLn('Mb');
  23. WriteLn(kb);
  24. WriteLn('Kb');
  25. WriteLn(b);
  26. WriteLn('Bytes');
  27. ReadLn();
  28. 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 ;)



Título: Re: ejercicio de pascal
Publicado por: SXF en 5 Noviembre 2010, 19:16 pm
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.


Título: Re: ejercicio de pascal
Publicado por: criskapunk en 5 Noviembre 2010, 20:29 pm
No no, para convertir de bytes a mb tenes que dividir por 2048, o dos veces por 1024.

Un saludo ;)


Título: Re: ejercicio de pascal
Publicado por: SXF en 9 Noviembre 2010, 13:14 pm
NO men lo que pasa es que:

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

Un saludo
;)


Título: Re: ejercicio de pascal
Publicado por: criskapunk en 9 Noviembre 2010, 13:28 pm
Tenes razon, error mio :xD jaja

Un saludo ;)


Título: Re: ejercicio de pascal
Publicado por: Lunfardo en 9 Noviembre 2010, 23:38 pm
26871979/1024*1024 =25 mb y sobra 657579 bytes estos se dividen entre 1024


26871979/1024*1024=26871979

26871979/(1024*1024)=25,6  =)


, salu2