По веденному буквенно-численному значению, вывести адрес ячейки матрицы - C (СИ)
Формулировка задачи:
Нужно, чтобы она по веденному буквенно-численному значению, выводила адрес ячейки только в числовом формате и была бесконечна, например:
A5 => [5,0]
Z8 => [8,25]
AAA2345 => [2345,702]
PA12 => [12,416]
Решение задачи: «По веденному буквенно-численному значению, вывести адрес ячейки матрицы»
textual
Листинг программы
struct cell { int x; int y; int value; struct cell* next; // указатель на следующий элемент односвязного списка cell() { next = 0; x = 0; y = 0;} cell(int a) { next = 0; value = a; x = 0; y = 0;} ~cell() { if(next) delete next; } void add_next(int a) { struct cell* v = this; while(v->next) v = v->next; v->next = new struct cell(a);} void print() { printf(("x:%d y:%d value:%d\n", x, y, value); if(next) next->print(); } };
Объяснение кода листинга программы
В данном коде представлен класс структурного типа cell
, который представляет собой элемент матрицы. У этого элемента есть следующие поля:
- int x; - координата X ячейки
- int y; - координата Y ячейки
- int value; - значение ячейки
- struct cell* next; - указатель на следующий элемент в односвязном списке Конструктор класса cell создает экземпляр этого класса, инициализируя поля значениями по умолчанию:
- next = 0;
- x = 0;
- y = 0;
- value = 0; В деструкторе класса cell выполняется удаление указателя на следующий элемент, если он не равен нулю: ~cell() { if(next) delete next; } Метод add_next добавляет новый элемент в список, начиная с текущего элемента и двигаясь по списку до конца, вставляя новый элемент после каждого встреченного элемента. Метод print выводит на экран значения полей x, y и value текущего элемента, а также вызывает метод print для следующего элемента, если он не равен нулю. Для списка, представленного в виде односвязного списка, необходимо выделить память под первый элемент списка и добавить в него все остальные элементы списка.