LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

@bvn13 спасибо, @sshestov спасибо, @deterok спасибо (внезапно, попробую), @grem спасибо, @anonymous спасибо, @Elyas спасибо, @erthink спасибо

Чтобы соответствовало таблице, на коленке сделал вот так, может кому пригодится, себе переделаю для моей размерности. Всё робит, спасибо ещё раз всем за варианты.

Эх, глупа моя черешня :D

#include <stdint.h>
#include <math.h>

typedef struct
{
    uint8_t h;
    uint8_t w;
}pose;

uint8_t pose_to_num(uint8_t h,uint8_t w)
{
  return h*8+w;
}

pose num_to_pose(uint8_t num)
{
   uint8_t h = floor(num / 8.5);
   uint8_t w = ((num % 8) == 0)?7:(num % 8) -1;
   return (pose){h,w};
}

int main(int argc, char *argv[])
{
    uint8_t num=0;
    for (int h = 0; h < 8; ++h)
    {
        for (int w = 0; w < 8; ++w)
        {
            num++;
            printf("[%i %i]-[%i]\n",num_to_pose(num).h,num_to_pose(num).w,pose_to_num(h,w));
        }
    }

    return 0;
}

Вывод


dron@gnu:~$ gcc rrr.c -lm;./a.out
[0 0]-[0]
[0 1]-[1]
[0 2]-[2]
[0 3]-[3]
[0 4]-[4]
[0 5]-[5]
[0 6]-[6]
[0 7]-[7]
[1 0]-[8]
[1 1]-[9]
[1 2]-[10]
[1 3]-[11]
[1 4]-[12]
[1 5]-[13]
[1 6]-[14]
[1 7]-[15]
[2 0]-[16]
[2 1]-[17]
[2 2]-[18]
[2 3]-[19]
[2 4]-[20]
[2 5]-[21]
[2 6]-[22]
[2 7]-[23]
[2 0]-[24]
[3 1]-[25]
[3 2]-[26]
[3 3]-[27]
[3 4]-[28]
[3 5]-[29]
[3 6]-[30]
[3 7]-[31]
[3 0]-[32]
[4 1]-[33]
[4 2]-[34]
[4 3]-[35]
[4 4]-[36]
[4 5]-[37]
[4 6]-[38]
[4 7]-[39]
[4 0]-[40]
[4 1]-[41]
[5 2]-[42]
[5 3]-[43]
[5 4]-[44]
[5 5]-[45]
[5 6]-[46]
[5 7]-[47]
[5 0]-[48]
[5 1]-[49]
[6 2]-[50]
[6 3]-[51]
[6 4]-[52]
[6 5]-[53]
[6 6]-[54]
[6 7]-[55]
[6 0]-[56]
[6 1]-[57]
[6 2]-[58]
[7 3]-[59]
[7 4]-[60]
[7 5]-[61]
[7 6]-[62]
[7 7]-[63]
dron@gnu:~$ 

Исходная версия LINUX-ORG-RU, :

Решено

@bvn13 спасибо, @sshestov спасибо, @deterok спасибо (внезапно, попробую), @grem спасибо, @anonymous спасибо, @Elyas спасибо, @erthink спасибо

Чтобы соответствовало таблице, на коленке сделал вот так, может кому пригодится, себе переделаю для моей размерности. Всё робит, спасибо ещё раз всем за варианты.

Эх, глупа моя черешня :D

#include <stdint.h>
#include <math.h>

typedef struct
{
    uint8_t h;
    uint8_t w;
}pose;

uint8_t pose_to_num(uint8_t h,uint8_t w)
{
  return h*8+w;
}

pose num_to_pose(uint8_t num)
{
   uint8_t h = floor(num / 8.5);
   uint8_t w = ((num % 8) == 0)?7:(num % 8) -1;
   return (pose){h,w};
}

int main(int argc, char *argv[])
{
    uint8_t num=0;
    for (int h = 0; h < 8; ++h)
    {
        for (int w = 0; w < 8; ++w)
        {
            num++;
            printf("[%i %i]-[%i]\n",num_to_pose(num).h,num_to_pose(num).w,pose_to_num(h,w));
        }
    }

    return 0;
}

Вывод


dron@gnu:~$ gcc rrr.c -lm;./a.out
[0 0]-[0]
[0 1]-[1]
[0 2]-[2]
[0 3]-[3]
[0 4]-[4]
[0 5]-[5]
[0 6]-[6]
[0 7]-[7]
[1 0]-[8]
[1 1]-[9]
[1 2]-[10]
[1 3]-[11]
[1 4]-[12]
[1 5]-[13]
[1 6]-[14]
[1 7]-[15]
[2 0]-[16]
[2 1]-[17]
[2 2]-[18]
[2 3]-[19]
[2 4]-[20]
[2 5]-[21]
[2 6]-[22]
[2 7]-[23]
[2 0]-[24]
[3 1]-[25]
[3 2]-[26]
[3 3]-[27]
[3 4]-[28]
[3 5]-[29]
[3 6]-[30]
[3 7]-[31]
[3 0]-[32]
[4 1]-[33]
[4 2]-[34]
[4 3]-[35]
[4 4]-[36]
[4 5]-[37]
[4 6]-[38]
[4 7]-[39]
[4 0]-[40]
[4 1]-[41]
[5 2]-[42]
[5 3]-[43]
[5 4]-[44]
[5 5]-[45]
[5 6]-[46]
[5 7]-[47]
[5 0]-[48]
[5 1]-[49]
[6 2]-[50]
[6 3]-[51]
[6 4]-[52]
[6 5]-[53]
[6 6]-[54]
[6 7]-[55]
[6 0]-[56]
[6 1]-[57]
[6 2]-[58]
[7 3]-[59]
[7 4]-[60]
[7 5]-[61]
[7 6]-[62]
[7 7]-[63]
dron@gnu:~$