Следующий код нужен для того что бы проверять содержимое ячейки. Ячейки имеют индекс 3,4,5,6,7,8,9,10,16, поскольку последняя ячейка находится на определеной дистанции то решил не использовать array а попытатся решить проблему другими средствами.
Меня интересует, является то что я пытаюсь(в этом коде) сделать выполнимым или это не соответсвует стандарту?
struct square {
char a; // каждая буква это ячейка
char b;
char c;
char d;
char e;
char f;
char g;
char h;
char n;
};
struct square *bol = {0};
функция которая делает проверку:
В даный момент я еще не написал ее поскольку bol->control_val = константа; ясно что является неправильно.
int legal_move_checker(int control_val)
{
control_val = control_val + 94; // Перевод индекса в букву
bol->control_val = константа;
return 0;
}
Теперь скажем если control_val содержит номер соответсвующий одной из букв, есть ли подходящий синтаксис что бы заставить стракт поверить bol->b?
P.S. Сам не являюсь програмистом(и не собираюсь учится на такого, Си нужен только для прикладных целей в моей специальности), так что возможно и не совсем верно выразил вопрос.
14.02.05 23:00: Перенесено модератором из 'C/C++. Прикладные вопросы' — Павел Кузнецов
Здравствуйте, cogito, Вы писали:
C>Теперь скажем если control_val содержит номер соответсвующий одной из букв, есть ли подходящий синтаксис что бы заставить стракт поверить bol->b?
Нет, такого в языке С++ не предусмотрено.
Но можно сделать иначе
struct square {
char vals['n'-'a'+1]; // от a до n включительно
};
...
square sq = { {0} };
...
sq.vals[index]; // по индексу: 0='a', 1='b', 2='c' и т.д.
sq.vals[letter - 'a']; // по имени
Здравствуйте, Кодт, Вы писали:
К>Нет, такого в языке С++ не предусмотрено.
Та среда на которой я пишу, CVI ближе к ANSI C, плас пласом не имеет связи.
Но это моя вина что не указал.
К>struct square {
К> char vals['n'-'a'+1]; // от a до n включительно
К>};
К>square sq = { {0} };
К>sq.vals[index]; // по индексу: 0='a', 1='b', 2='c' и т.д.
К>sq.vals[letter - 'a']; // по имени
К>
Вообщем в таком случае можно обойтись простым array даже не используя struct. Вся цель была обойтись без бесмысленого выделения лишней памяти. Скажем для индексов от 3 до 10 можно сделать просто i-3, но вся проблема что от 11-15 индексы относятся к другим параметрам(я работаю с графикой так у каждого элемента свой индекс обращения) а последняя ячейка имеет индекс 16(так уж получилось, в ручную это править категарически не советуется), выходит штук 5 лишней памяти(которая будед static на протяжение всей проги). Пытаясь извратится со страктом пытался написать этот код более экономически.
Ладно в любом случае огромное спасибо за ответ.
Здравствуйте, Аноним, Вы писали:
А>Вообщем в таком случае можно обойтись простым array даже не используя struct. Вся цель была обойтись без бесмысленого выделения лишней памяти. Скажем для индексов от 3 до 10 можно сделать просто i-3, но вся проблема что от 11-15 индексы относятся к другим параметрам(я работаю с графикой так у каждого элемента свой индекс обращения) а последняя ячейка имеет индекс 16(так уж получилось, в ручную это править категарически не советуется), выходит штук 5 лишней памяти(которая будед static на протяжение всей проги). Пытаясь извратится со страктом пытался написать этот код более экономически.
Ну, можно сделать отдельно транслятор имя-индекс.
enum { name_a, name_b,.....,name_n, name__count };
char index2name(int n) { /* табличным способом */ }
int name2index(char ch) { /* поиск в таблице */ }