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