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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2017, 13:32   #1
Oxyl1te
Новичок
Джуниор
 
Регистрация: 13.09.2017
Сообщений: 2
По умолчанию [Pascal ABC] калькулятор единиц

Пытался написать программу для перевода бит в мегабайт, килобайт, байт в бит и т.д, ничего не выходит
Код:
program KalculatorFEE;
 USES graphabc;
 var a,b,rez:real;
  p,k:char;
  d:char;
begin
  setwindowsize(330,400);
  writeln('Перевод единиц');
setwindowsize(330,400);
 writeln('Единицы измерения обозначаются цифрами');
  writeln('1-Бит');
  writeln('2-Байт');
  writeln('3-Килобайт');
  writeln('4-Мегабайт');
write('Напишите начальную единицу измерения');
 readln(p);
 writeln(p);
case p of
  '1': writeln; 
  '2': writeln; 
  '3': writeln; 
  '4': writeln;
end;
write('Во что перевод?');
 readln(p);
 writeln(p);
 write('Напишите число :');
 readln(b);
 writeln(b);
 case p of
  '1': rez:=b*4;
  '2': rez:=b*4;
  '3': rez:=b*4;
  '4': rez:=b*4;
end;
writeln ('Получится :');
writeln (a,p,b,'=',rez);
write('Нажмите enter для завершения');
  read(k);
  while (k<>chr(10)) do read(k);
  clearwindow;
  sleep(200);
  window.close;
end.
Прошу исправить, или написать новый и с комментариями пожалуйста.

Последний раз редактировалось Oxyl1te; 13.09.2017 в 13:36.
Oxyl1te вне форума Ответить с цитированием
Старый 13.09.2017, 14:06   #2
Oxyl1te
Новичок
Джуниор
 
Регистрация: 13.09.2017
Сообщений: 2
По умолчанию

Код:
 USES graphabc;
begin
  setwindowsize(330,400);
  writeln('Перевод единиц измерения информации');
setwindowsize(500,400);
setwindowtitle('Перевод единиц');
Var a:integer;
var n:integer;
var k:char;
begin
write('Введите число = ');
readln(a);
writeln(a);
end;
begin
writeln('Укажите направление перевода:');
writeln('1 - бит -> байт, Кбайт, Мбайт');
writeln('2 - байт -> бит, Кбайт, Мбайт');
writeln('3 - Кбайт -> бит, байт, Мбайт');
writeln('4 - Мбайт -> бит, байт, Кбайт');
end;
readln(n);
case n of
 1: writeln(a,' бит = ',a/8,' байт, ',a/8/1024,' Кбайт, ',a/8/1024/1024,' Мбайт');
 2: writeln(a,' байт = ',a*8,' бит, ',a/1024,' Кбайт, ',a/1024/1024,' Мбайт');
 3: writeln(a,' Кбайт = ',a*8*1024,' бит, ',a*1024,' байт, ',a/1024,' Мбайт');
 4: writeln(a,' Мбайт = ',a*8*1024*1024,' бит, ',a*1024*1024,' байт, ',a*1024,' Кбайт');
 else writeln('Неверный номер');
 end;
 write('Нажмите enter для завершения');
  read(k);
  while (k<>chr(10)) do read(k);
  clearwindow;
  sleep(10);
  window.close;
  end.
Сейчас заработал, можете сделать короче?
Oxyl1te вне форума Ответить с цитированием
Старый 17.09.2017, 10:36   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
function BaitAutoToKMGb(bait: int64; kol_wo_znak, edinitsa_izmereniya: byte): string;
 var do_zpt: byte;
     r: extended;
     s: string;
 begin
    r:=bait;
    s:='';
    Case edinitsa_izmereniya of
    1: s:='б';
    2: s:='бит';
    3: s:='Б';
    4: s:='байт';
    end;
    If bait>=1E3 then
    begin
       r:=bait/1024;
       Case edinitsa_izmereniya of
       1: s:='Кб';
       2: s:='Кбит';
       3: s:='КБ';
       4: s:='Кбайт';
       end;
    end;
    If bait>=1E6 then
    begin
       r:=bait/1024/1024;
       Case edinitsa_izmereniya of
       1: s:='Мб';
       2: s:='Мбит';
       3: s:='МБ';
       4: s:='Мбайт';
       end;
    end;
    If bait>=1E9 then
    begin
       r:=bait/1024/1024/1024;
       Case edinitsa_izmereniya of
       1: s:='Гб';
       2: s:='Гбит';
       3: s:='ГБ';
       4: s:='Гбайт';
       end;
    end;
    do_zpt:=Length(IntToStr(Trunc(r)));
    If do_zpt>=kol_wo_znak then
       kol_wo_znak:=do_zpt+1;
    Result:=Format('%*.*f', [do_zpt, kol_wo_znak-do_zpt-1, r]);
    If s<>'' then
       Result:=Result+' '+s;
 end;
где
bait - исходное число;
kol_wo_znak - минимальное количество символов, выводимых в строке (запятая включается в количество знаков десятичного числа!);
edinitsa_izmereniya - формат единицы измерения, значения которых даны ниже:
0 - без единиц измерения,
1 - биты сокращенно (б, Кб, Мб, Гб),
2 - биты полностью (бит, Кбит, Мбит, Гбит),
3 - байты сокращенно (Б, КБ, МБ, ГБ),
4 - байты полностью (байт, Кбайт, Мбайт, Гбайт).

http://newerow1989.narod.ru/publ/avt...bajty/1-1-0-36

С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доказать, что для всякого n существует последовательность нулей и единиц длины 2^n (Pascal) Nurz Помощь студентам 19 25.05.2016 18:57
Построить алгоритм в виде блок-схем и написать соответствующую программу на языке Pascal / Pascal ABC IgorMyakota Паскаль, Turbo Pascal, PascalABC.NET 9 06.03.2014 07:32
дана строка состоящая из групп нулей и единиц. Подсчитать количества единиц в группах с нечетным количеством символов (на Delphi) ArturBattalov Помощь студентам 1 06.10.2013 16:16
pascal abc, pascal turbo. выборка данных из одного .txt в другой ТипичныйСтудент Помощь студентам 6 27.04.2013 15:29
Программы в Pascal, среда pascal ABC. Лабораторные работы Одинокая Волчица Фриланс 8 10.02.2012 20:09