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