История изменений
Исправление 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:~$