Пояснить работу кода - 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)

Объяснение кода листинга программы

  1. Объявляется макрос PERIPH_BASE, который равен ((uint32_t)0x40000000). Это базовый адрес для периферийных устройств.
  2. Затем объявляется макрос APB2PERIPH_BASE, который равен (PERIPH_BASE + 0x10000). Это базовый адрес для периферийных устройств, подключенных к APB2.
  3. Далее объявляется макрос GPIOC_BASE, который равен (APB2PERIPH_BASE + 0x1000). Это базовый адрес для GPIO порт C.
  4. Затем определяются макросы I, O и __IO, которые описывают типы регистров (volatile const, volatile и volatile).
  5. Создается структура GPIO_TypeDef, которая содержит семь полей: CRL, CRH, IDR, ODR, BSRR, BRR и LCKR. Все они имеют тип uint32_t и являются регистрами GPIO.
  6. Наконец, определяется макрос GPIOC, который равен ((GPIO_TypeDef *) GPIOC_BASE). Это указатель на структуру GPIO_TypeDef, которая представляет GPIO порт C.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы