Пояснить работу кода - C (СИ)
Формулировка задачи:
Составить вектор из номеров столбцов, где все элементы являются числовыми палиндромами.
Хотел бы попросить что бы пояснили работу кода, последовательность действий.
За ранее спасибо.
#include <stdio.h>
#include <conio.h>
int main() {
int mass[100][100];
int result[100];
int l, h;
int num=0;
printf("vvedite razmery massiva: ");
scanf("%d%d", &h, &l);
printf("vvedite elementy massiva:\n");
for(int i=0; i<h; i++) {
for(int j=0; j<l; j++) {
scanf("%d", &mass[i][j]);
}
}
for(int i=0; i<l; i++) {
bool flag=true;
for(int j=0; j<h; j++) {
int tmp=0, ch=mass[j][i];
while(ch>0) {
tmp*=10;
tmp+=ch%10;
ch/=10;
}
if(tmp!=mass[j][i]) {
flag=false;
break;
}
}
if(flag) {
result[num]=i+1;
num++;
}
}
if(num>0){
printf("iz palinomov sostoyat stolbtsy: ");
for(int i=0; i<num; i++) printf("%d ", result[i]);
}
else printf("stolbtsov ne naydeno.");
_getch();
return 0;
}Решение задачи: «Пояснить работу кода»
textual
Листинг программы
#define PERIPH_BASE ((uint32_t)0x40000000)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
#define __I volatile const
#define __O volatile
#define __IO volatile
typedef struct
{
__IO uint32_t CRL;
__IO uint32_t CRH;
__IO uint32_t IDR;
__IO uint32_t ODR;
__IO uint32_t BSRR;
__IO uint32_t BRR;
__IO uint32_t LCKR;
} GPIO_TypeDef;
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
Объяснение кода листинга программы
- Объявляется макрос PERIPH_BASE, который равен ((uint32_t)0x40000000). Это базовый адрес для периферийных устройств.
- Затем объявляется макрос APB2PERIPH_BASE, который равен (PERIPH_BASE + 0x10000). Это базовый адрес для периферийных устройств, подключенных к APB2.
- Далее объявляется макрос GPIOC_BASE, который равен (APB2PERIPH_BASE + 0x1000). Это базовый адрес для GPIO порт C.
- Затем определяются макросы I, O и __IO, которые описывают типы регистров (volatile const, volatile и volatile).
- Создается структура GPIO_TypeDef, которая содержит семь полей: CRL, CRH, IDR, ODR, BSRR, BRR и LCKR. Все они имеют тип uint32_t и являются регистрами GPIO.
- Наконец, определяется макрос GPIOC, который равен ((GPIO_TypeDef *) GPIOC_BASE). Это указатель на структуру GPIO_TypeDef, которая представляет GPIO порт C.