Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2008, 17:40   #1
okgo
Пользователь
 
Регистрация: 02.03.2008
Сообщений: 12
Восклицание Перевод из Кб в Мб и т.д.

Доброго времени суток.
Уважаемые программисты, помогите составить программу на TP 7, которая будет переводить байты в килобайты, килобайты в гигабайты, как можно больше функций.
Если Вас не затруднит, напишите хотя бы одну операцию, дальше я справлюсь по аналогии.
Знаю, задача довольна простая, но очень давно не сидел за TP, подзабыл и запутался)
Заранее спасибо!
okgo вне форума Ответить с цитированием
Старый 16.11.2008, 19:42   #2
okgo
Пользователь
 
Регистрация: 02.03.2008
Сообщений: 12
По умолчанию

Времени не очень много, если возможно, побыстрее.. Не хочу наглеть, но все же)
okgo вне форума Ответить с цитированием
Старый 16.11.2008, 20:13   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

1 Кб = 1024 б
1 Мб = 1024 Кб
и т.д.
Alex21 вне форума Ответить с цитированием
Старый 16.11.2008, 20:22   #4
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Посмотрите здесь
Dux вне форума Ответить с цитированием
Старый 16.11.2008, 20:41   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

КБ это 2 в 10 степени байт, МБ - 2^20, ГБ - 2^30 и т.д.
Код:
var
  b,kb,mb,gb: real;
begin
  b:=123456789; //байты
  kb:=b/(1 shl 10); //килобайты
  mb:=b/(1 shl 20); //мегабайты
  gb:=b/(1 shl 30); //гигабайты
  ........................................
_Dmitry вне форума Ответить с цитированием
Старый 16.11.2008, 20:44   #6
okgo
Пользователь
 
Регистрация: 02.03.2008
Сообщений: 12
По умолчанию

Вот, как раз что, что я и хотел видеть) Большое спасибо, но тему не закрываю))
okgo вне форума Ответить с цитированием
Старый 18.11.2008, 18:03   #7
okgo
Пользователь
 
Регистрация: 02.03.2008
Сообщений: 12
По умолчанию

К сожалению, немного не тот результат, которого я ожидал.
Нельзя ли привести другой тип данных? В Real'e очень много лишнего) За это я и не люблю вещественные типы
Результат приложил.
Вложения
Тип файла: rar CALCYLAT.rar (237 байт, 69 просмотров)

Последний раз редактировалось okgo; 18.11.2008 в 18:06.
okgo вне форума Ответить с цитированием
Старый 18.11.2008, 18:44   #8
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Если размер в байтах всегда целый, то этот же размер в килобайтах, в мегабайтах и гигабайтах может быть дробным, поэтому в программе и используется тип переменных real. Округляйте результат до необходимого количества знаков после запятой.

Вот, поправил вашу программу. Результаты печатаются с двумя знаками после запятой.
Код:
program Calculator;
var b, kb, mb, gb: real;
begin
  write('Bytes: '); readln(b); {bytes}
  kb:=b/(1 shl 10); {kbytes}
  mb:=b/(1 shl 20); {mbytes}
  gb:=b/(1 shl 30); {gbytes}
  writeln(b:1:0,' bytes = ',kb:1:2, ' kbytes = ',mb:1:2, ' mbytes = ', gb:1:2, ' = gbytes ');
  readln;
end.
Обратите внимание на выражения (1 shl 10)...
(1 shl 10) - это сдвиг влево на 10 разрядов. Сдвиг на 1 разряд эквивалентен умножению на 2. Сдвиг единицы влево на 10 разрядов эквивалентен умножению на 2 в 10 степени. Вы же в программе заменили бинарный сдвиг на простое деление, что в корне не верно.
_Dmitry вне форума Ответить с цитированием
Старый 18.11.2008, 21:03   #9
okgo
Пользователь
 
Регистрация: 02.03.2008
Сообщений: 12
По умолчанию

Ой, не заметил) Спасибо, пойду доделывать.
okgo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод кода ELL Помощь студентам 0 07.06.2008 01:36
перевод на русский Ensoph Общие вопросы Delphi 3 19.05.2008 10:09
Перевод значений DeDoK Общие вопросы Delphi 3 19.05.2008 08:39
перевод в последовательность Janette Паскаль, Turbo Pascal, PascalABC.NET 2 23.03.2008 14:11
перевод числа kommunist Помощь студентам 5 15.10.2007 22:58