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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2016, 15:55   #1
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию Таблица сложения в 16 системе счисления

Добрый вечер, кто может помочь разработать приложение, которое выводит на экран таблицу сложения от 0 до F в шестнадцатеричной системе счисления.

16.jpg

Получается, сначала нужно разработать таблицу сложения чисел от 0 до 15 в десятичной системе счисления?
После, воспользоваться функцией Format и вывести все числа в таблице в формате шестнадцатеричного числа?

Спасибо.
serge-first вне форума Ответить с цитированием
Старый 26.03.2016, 16:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
for i:=0 to 15 do for j:=0 to 15 do IntToHex(i+j,2) помещай куда хочешь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.03.2016, 18:43   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Получается, сначала нужно разработать таблицу сложения чисел от 0 до 15 в десятичной системе счисления?
После, воспользоваться функцией Format и вывести все числа в таблице в формате шестнадцатеричного числа?
Зачем там сложно, сразу считай в нужном формате.
Человек_Борща вне форума Ответить с цитированием
Старый 27.03.2016, 13:28   #4
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Зачем там сложно, сразу считай в нужном формате.
Мне наверное нужно было не в эту тему писать, а в помощь студентам)

Не правильно описал) Это требования такие в задачи) Нужно сначала разработать таблицу сложения чисел от 0 до 15 в десятичной системе счисления, а потом воспользоваться функцией Format и вывести все числа в таблице в формате шестнадцатеричного числа.

Спасибо)
serge-first вне форума Ответить с цитированием
Старый 27.03.2016, 14:28   #5
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    StringGrid1: TStringGrid;
    procedure CheckBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    Table: array of array of Integer;
    procedure InitTable;
    procedure ShowTable(AStringGrid: TStringGrid; ShowAsHex: Boolean = False);
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

const
  cNCols = 16;
  cNRows = 16;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  InitTable;
  CheckBox1Change(Self);
end;

procedure TForm1.InitTable;
var
  ACol, ARow: Integer;
begin
  SetLength(Table, cNRows);
  for ARow := 0 to cNRows - 1 do
    SetLength(Table[ARow], cNCols);

  for ARow := 0 to cNRows - 1 do
    for ACol := 0 to cNCols - 1 do
      Table[ACol, ARow] := ACol + ARow;
end;

procedure TForm1.ShowTable(AStringGrid: TStringGrid; ShowAsHex: Boolean = False);
const
  FmtStr: array[Boolean] of string = ('%d', '%x');
var
  ACol, ARow: Integer;
begin
  if Assigned(AStringGrid) then
    with AStringGrid do
    begin
      BeginUpdate;
      try
        ColCount := cNCols;
        RowCount := cNRows;
        DefaultColWidth := 22;
        DefaultRowHeight := 22;
        FixedCols := 1;
        FixedRows := 1;
        for ARow := 0 to cNRows - 1 do
          for ACol := 0 to cNCols - 1 do
            Cells[ACol, ARow] := Format(FmtStr[ShowAsHex], [Table[ACol, ARow]]);
      finally
        EndUpdate;
      end;
    end;
end;

procedure TForm1.CheckBox1Change(Sender: TObject);
begin
  ShowTable(StringGrid1, CheckBox1.Checked);
end;

end.

Последний раз редактировалось Filka; 27.03.2016 в 14:43.
Filka вне форума Ответить с цитированием
Старый 27.03.2016, 14:46   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Нужно сначала разработать таблицу сложения чисел от 0 до 15 в десятичной системе счисления, а потом воспользоваться функцией Format и вывести все числа в таблице в формате шестнадцатеричного числа.
Открою тебе страшную тайну! Вся информация хранится и обрабатывается только в двоичной системе счисления. Всё остальное - это только отображение той самой информации.

Если ты складываешь 11+9, то процессор считает 1011 + 1001 = 10100. И ему пофиг, как ты будешь результат воспринимать.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 30.03.2016, 13:38   #7
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Я сделал так:

Код:
procedure TForm1.FormCreate(Sender: TObject);
const N=16;
      M=16;
var Col,Row: integer;
begin
StringGrid1.ColCount:=N;
StringGrid1.RowCount:=M;
for Col:=0 to StringGrid1.ColCount - 1 do
for Row:=0 to StringGrid1.RowCount - 1 do
   begin
    if Col=0 then StringGrid1.Cells[Col,Row]:=Format('%x',[Row]) else
    if Row=0 then StringGrid1.Cells[Col,Row]:=Format('%x',[Col]) else
    StringGrid1.Cells[Col,Row]:=Format('%x',[Col+Row]);
   end;

StringGrid1.Width := StringGrid1.DefaultColWidth * StringGrid1.ColCount;
StringGrid1.Height := StringGrid1.DefaultRowHeight * StringGrid1.RowCount;

end;

end.
serge-first вне форума Ответить с цитированием
Старый 30.03.2016, 13:41   #8
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

И теперь переделать таблицу умножения от A до F ???

Спасибо)
serge-first вне форума Ответить с цитированием
Старый 30.03.2016, 14:05   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
var Col,Row: Integer;
begin
  StringGrid1.ColCount:=17;  StringGrid1.FixedCols:=1;
  StringGrid1.RowCount:=17;  StringGrid1.FixedRows:=1;
  for Col:=1 to StringGrid1.ColCount - 1 do begin
    StringGrid1.Cells[0,Col]:=Format('%x',[Col-1]);
    StringGrid1.Cells[Col,0]:=Format('%x',[Col-1]);
//    for Row:=1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[Col,Row]:=Format('%x',[Col+Row-2]);
    for Row:=1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[Col,Row]:=Format('%x',[(Col-1)*(Row-1)]);
  end;
  StringGrid1.Width:=(StringGrid1.DefaultColWidth+2)*StringGrid1.ColCount;
  StringGrid1.Height:=(StringGrid1.DefaultRowHeight+2)*StringGrid1.RowCount;
end;
Вместо Format можно IntToHex как где-то выше писал
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.03.2016 в 14:11.
Аватар вне форума Ответить с цитированием
Старый 30.03.2016, 14:20   #10
serge-first
Пользователь
 
Регистрация: 27.02.2013
Сообщений: 66
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
procedure TForm1.FormCreate(Sender: TObject);
var Col,Row: Integer;
begin
  StringGrid1.ColCount:=17;  StringGrid1.FixedCols:=1;
  StringGrid1.RowCount:=17;  StringGrid1.FixedRows:=1;
  for Col:=1 to StringGrid1.ColCount - 1 do begin
    StringGrid1.Cells[0,Col]:=Format('%x',[Col-1]);
    StringGrid1.Cells[Col,0]:=Format('%x',[Col-1]);
//    for Row:=1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[Col,Row]:=Format('%x',[Col+Row-2]);
    for Row:=1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[Col,Row]:=Format('%x',[(Col-1)*(Row-1)]);
  end;
  StringGrid1.Width:=(StringGrid1.DefaultColWidth+2)*StringGrid1.ColCount;
  StringGrid1.Height:=(StringGrid1.DefaultRowHeight+2)*StringGrid1.RowCount;
end;
Вместо Format можно IntToHex как где-то выше писал
А если исправить мой код? Дополнить? Мне именно с Format нужно)
serge-first вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] ИЗ четырнадцатеричной системе счисления в десятеричной системе счисления Safok Помощь студентам 1 17.11.2014 22:41
Умножение в 4-системе счисления StoneGod Общие вопросы C/C++ 3 11.10.2014 15:56
Не работает преобразование кода из одной системы счисления в ID в другой системе счисления Ultran PHP 1 09.11.2013 21:15
В римской системе счисления Maxloki Паскаль, Turbo Pascal, PascalABC.NET 5 23.07.2013 20:47
Длинная Арифметика в не 10^n системе счисления svloyso Общие вопросы C/C++ 1 15.02.2011 16:05