Функция копирования массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

При заданном алгоритме функция работает верно.
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b)
{
    int i, j;
 
    const double *pt;
    pt = &ar0[0][0];
 
    for(i = 0; i < ROWS; ++i)
    {
        for(j = 0; j < COLS; ++j)
        {
            ar2[i][j] = *pt++;
        }
    }
}
Если же я меняю алгоритм на следующий:
void copy2(const double (*ar0)[COLS], double (*ar2)[COLS], int b)
{
    int i, j = 0;
 
    const double *pt;
    pt = &ar0[0][0];
 
    for(i = 0; i < ROWS; ++i)
    {
        while(j++ < COLS)
        {
            ar2[i][j] = *pt++;
        }
    }
}
функция работает неправильно. С чем может быть связана ошибка ?

Решение задачи: «Функция копирования массива»

textual
Листинг программы
 while(j < COLS)
        {
            ar2[i][j++] = *pt++;
        }

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

В данном коде выполняется копирование массива. Вот список действий:

  1. i и j инициализируются нулевыми значениями.
  2. pt указывает на первый элемент в исходном массиве.
  3. ar2 указывает на первый элемент в целевом массиве.
  4. Пока j меньше COLS (количество столбцов в массиве), выполняется следующее действие:
    • ar2[i][j] присваивается значение *pt (первый элемент в исходном массиве).
    • j увеличивается на 1.
    • pt увеличивается на 1.
  5. Код возвращает i и j, которые теперь указывают на следующий элемент в исходном и целевом массивах соответственно.
  6. Если i меньше ROWS (количество строк в массиве), то код возвращает к шагу 4.
  7. Копирование массива завершено.

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


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

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

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