Связь массивов с указателями - C (СИ)

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

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

Пожалуйста, решите задачу. Очень нужно. Даны 2 Массива А(M) и В(M). Нужно в каждом массиве найти наименьший элемент и прибавить его ко всем элементам массива. К элементам массива нужно обращаться через указатель. Если не трудно, прокомментируйте строчки какие не лень будет. Хотелось бы ещё разобраться со связью массивов и указателей.

Решение задачи: «Связь массивов с указателями»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
//-----------------------------------------------------------------------------
int* GetMin(int array[], size_t size)
{
    int* min = array++;
 
    while (--size)
    {
        if (*array < *min)
        {
            min = array;
        }
        array++;
    }
 
    return min;
}
//-----------------------------------------------------------------------------
int* IncAll(int array[], size_t size, int value)
{
    int* cur = array;
 
    while (size--)
    {
        *cur += value;
        cur++;
    }
 
    return array;
}
//-----------------------------------------------------------------------------
void Print(int array[], size_t size)
{
    while (size--)
    {
        printf("%d ", *array++);
    }
    printf("\n");
}
//-----------------------------------------------------------------------------
 
int main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    size_t nA = sizeof(a) / sizeof(*a);
 
    int b[] = {8, 6, 4, 2};
    size_t nB = sizeof(b) / sizeof(*b);
 
    int* minA = GetMin(a, nA);
    int* minB = GetMin(b, nB);
 
    IncAll(a, nA, *minA);
    IncAll(b, nB, *minB);
 
    Print(a, nA);
    Print(b, nB);
 
    system("pause");
    return 0;
}

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

  1. Связь массивов с указателями - код использует массивы и указатели для работы с данными.
  2. Определение минимума в массиве - функция GetMin() находит минимальное значение в массиве и возвращает указатель на этот элемент.
  3. Изменение всех элементов массива на заданное значение - функция IncAll() увеличивает каждый элемент массива на заданное значение.
  4. Вывод массива на экран - функция Print() выводит элементы массива на экран через пробел.
  5. Массив a - массив из 10 целых чисел, инициализированных значениями от 1 до 10.
  6. Массив b - массив из 4 целых чисел, инициализированных значениями от 8 до 4.
  7. minA и minB - переменные, которые содержат указатели на минимальные элементы массивов a и b соответственно.
  8. nA и nB - переменные, которые содержат размеры массивов a и b соответственно.
  9. Вывод массива a и b на экран после увеличения всех элементов на минимальное значение - после вызова функции IncAll(), значения всех элементов массива a и b увеличатся на минимальное значение среди этих массивов.
  10. Использование функции system(pause) - функция system(pause) приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу. Это позволяет пользователю видеть результаты работы программы перед ее завершением.

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

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